Попытка отладки файла .htaccess

#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. это просто фантастика! вы, ребята, правите!!! Большое спасибо!!!