как исправить htaccess на дружественный URL

#.htaccess

#.htaccess

Вопрос:

я пробовал другой код, чтобы преобразовать URL в дружественный URL, но, похоже, он не работает. вот мой код, который недавно был опробован.

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
 

я хотел бы использовать вместо идентификатора дружественный текст, который может быть заголовком страницы.

моя текущая ссылка выглядит следующим образом

 http://example.com/website/425199399/
 

я исключаю ссылку примерно так

 http://example.com/website/the-working-class-family-425199399
 

Спасибо за вашу помощь.

Ответ №1:

Опубликованный вами фрагмент кода даже не пытается реализовать перезапись, которую вы набросали…

Вот версия, которая должна указать вам правильное направление, но вам, безусловно, придется адаптировать ее к нашим потребностям и конкретной ситуации. Таким образом, вы не сможете обойти чтение документации по используемым вами инструментам. Вы обнаружите, что документация модулей apache (ее модуль перезаписи) отличного качества и предлагает действительно хорошие примеры…

 RewriteEngine on
RewriteRule ^/?website/. -(d )$ /website/$1 [END]
 

В случае, если вы получаете внутреннюю ошибку сервера (http status 500), используя приведенное выше правило, есть вероятность, что вы используете очень старую версию http-сервера apache. В этом случае вы увидите четкую подсказку о неподдерживаемом [END] флаге в файле журнала ошибок вашего http-сервера. Вы можете либо попытаться обновить, либо использовать более старый [L] флаг, вероятно, в этой ситуации он будет работать так же, хотя это немного зависит от ваших настроек.

Это правило будет работать аналогично в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл «.htaccess»). Очевидно, что модуль перезаписи должен быть загружен на http-сервер и включен на http-хосте. В случае, если вы используете динамический конфигурационный файл, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и чтобы он находился в папке хоста DOCUMENT_ROOT .

И общее замечание: вы всегда должны предпочитать размещать такие правила в конфигурации хоста http-серверов вместо использования динамических файлов конфигурации («.htaccess»). Эти динамические файлы конфигурации усложняют работу, часто являются причиной неожиданного поведения, их трудно отлаживать, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевых поставщиков услуг) или для приложений, настаивающих на написании собственных правил (что является очевидным кошмаром безопасности).