Я использую правило htaccess RewriteRule для своего сайта, я пробовал его двумя способами, первый работает, а второй не работает. Вот мой код
Это работает
RewriteRule ^article/(.*)$ /article-detail.php?slug=$1 [L]
Не работает (просто использую папку)
RewriteRule ^article/(.*)$ /article/article-detail.php?slug=$1 [L]
Второй способ - выдать внутреннюю ошибку сервера. Можете ли вы помочь, пожалуйста.
Куда добавить? Я только что добавил одну жизнь, но она не работает
@Gulshan не могли бы вы объяснить это
Можете ли вы предоставить свой полный htaccess?
@ pr1nc3 извините! Я не могу предоставить вам полный файл htaccess. Я могу просто предоставить этот фрагмент кода.






RewriteRule ^article/(.*)$ /article/article-detail.php?slug=$1 [L]
Ваше второе правило не работает, потому что ваш шаблон регулярного выражения соответствует как исходному, так и целевому URL-адресам, что приводит к циклу перезаписи и вызывает ошибку 500.
Вы можете добавить RewriteCond, чтобы предотвратить такое поведение:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^article/(.+)$ article/article-detail.php?slug=$1 [L,QSA,NC]
Отлично работает!!! не могли бы вы объяснить свой ответ, объяснив RewriteCond %{REQUEST_FILENAME} !-f и RewriteCond %{REQUEST_FILENAME} !-d и RewriteRule ^article/(.+) вместо RewriteRule ^article/(.*)?
.+ соответствует 1 или более символам вместо 0 или более, как в .*. RewriteCond с !-f убедитесь, что запрос не для файла, а !-d убедитесь, что запрос не для каталога.
Ты гений Человек! Спасибо
Добавьте правило
RewriteBase /article/