У меня есть веб-сайт со смесью статических страниц без переменных (например: about.php) и некоторых динамических страниц (например: searchresults.php? A = 1&б = 2)
Прямо сейчас мой .htaccess позволяет показывать статические страницы, но не динамические. Однако все, что я пытался сделать, чтобы динамические страницы работали, нарушает чистые URL-адреса для статических страниц.
RewriteEngine On
DirectoryIndex index.php index.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
Я бы хотел, чтобы конечный результат выглядел так:
http://example.com/about.php -> http://example.com/about
а также
http://example.com/searchresults.php?a=1&b=2 -> http://example.com/searchresults/1/2
Возможно ли то, что я хочу сделать?
Да, это возможно.
Во-первых, вам нужно изменить свое правило, чтобы удалить расширение. В настоящее время у вас есть два правила, которые соответствуют чему-либо (это означает, что второе никогда не сработает), а второе правило не имеет условия.
Во-вторых, ваше правило поиска должно быть указано явно.
Ваш .htaccess
Теперь файл должен выглядеть так:
RewriteEngine on
# Rewrite the search page
RewriteRule ^searchresults/([^/]+)/([^/]+)/?$ searchresults.php?a=$1&b=$2 [QSA,L]
# Allow requests without php/html extensions
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^\.]+)$ $1.html [L]
Попробуйте строку кода ниже для вашего файла htaccess.
RewriteEngine on
RewriteRule aboutus/$ about.php [NC,L,QSA]
RewriteRule searchresults/(.*)/(.*)/$ searchresults.php?a=$1 & b=$2 [NC,L,QSA]