#apache #.htaccess #mod-rewrite #url-rewriting #friendly-url
#apache #.htaccess #mod-переписать #url-переписывание #дружественный-url
Вопрос:
Я начинаю работу с функцией mod_rewrite для моей веб-страницы PHP
Я был очень взволнован тем, что создал свое первое правило перезаписи, но когда я добавил в свой файл .htaccess, я получил ошибку 500 для всех веб-страниц (не только для той, которую я пытаюсь перенаправить).
Вот мой файл:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^([^/]*)/(([^/]*)/)*$
RewriteCond %{REQUEST_FILENAME}index.php !-f
RewriteCond %{REQUEST_FILENAME}index.html !-f
RewriteCond %{REQUEST_FILENAME}index.htm !-f
RewriteRule ^/([a-zA-Z-] )/([a-zA-Z-] )/([0-9] )$ ficha_jugador.php?idjugador=$3 [L]
RewriteRule (.*) /index.html [L]
Моя новая строка 8-я, остальные по умолчанию на моем веб-сервере
Я попробовал что-то гораздо более простое для строки 8, просто чтобы протестировать
RewriteRule ^writetest.html http://www.after5pc.net [QSA,L]
Но это также привело к ошибке 500, поэтому это не кажется проблемой синтаксиса
В конце концов, то, что я хочу сделать, это изменить (удалить мои URL-адреса)
http://cadistas1910.com/ficha_jugador.php?idjugador=1304
by
http://cadistas1910.com/alvaro-garcia-canto/alvaro-garcia/1304
Любая помощь, которую вы, ребята, можете предоставить? Большое спасибо!
Ответ №1:
Я полагаю, что виновником может быть последняя строка вашего файла .htaccess, не могли бы вы попробовать один раз.
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z-] )/([a-zA-Z-] )/([0-9] )$ ficha_jugador.php?idjugador=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]
Я добавил туда условие для перезаписи index.html тогда и только тогда, когда Uri имеет несуществующий каталог / файл, почему, потому что это создаст бесконечный цикл без условия, поскольку вы переписываете все в index.html и все (по регулярному выражению) совпадало index.html кроме того, следовательно, цикл и 500 внутренних ошибок, которые вы получаете.
Также ваше правило для перезаписи с http://localhost:80/alvaro-garcia-canto/alvaro-garcia/1304
НА http://localhost:80/ficha_jugador.php?idjugador=1304
было изменено на одну строку выше.
ПРИМЕЧАНИЕ: Чтобы исправить это, сделайте ваши ссылки абсолютными или используйте базовый тег. В заголовке вашей веб-страницы добавьте это <base href="/">
, чтобы ваши относительные ссылки могли загружаться из правильного местоположения.
Комментарии:
1. @user2954295, вам нужно использовать базовый тег, чтобы исправить ваш js и другие относительные ресурсы. Если вы связываете файлы js, используя относительный путь, то файл, очевидно, получит значение 404, потому что он ищет URL -адрес . например, если URL-адрес /file/ вместо file.html затем ваши относительные ресурсы загружаются из /file/, который является не каталогом, а переписанным HTML-файлом. Чтобы исправить это, либо сделайте ваши ссылки абсолютными, либо используйте базовый тег. В заголовке вашей веб-страницы добавьте это
<base href="/">
, чтобы ваши относительные ссылки могли загружаться из правильного местоположения.2. это просто фантастика! вы, ребята, правите!!! Большое спасибо!!!