Чистый URL для статических и динамических страниц

У меня есть веб-сайт со смесью статических страниц без переменных (например: 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

Возможно ли то, что я хочу сделать?

0

Решение

Да, это возможно.

Во-первых, вам нужно изменить свое правило, чтобы удалить расширение. В настоящее время у вас есть два правила, которые соответствуют чему-либо (это означает, что второе никогда не сработает), а второе правило не имеет условия.

Во-вторых, ваше правило поиска должно быть указано явно.

Ваш .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]
1

Другие решения

Попробуйте строку кода ниже для вашего файла htaccess.

RewriteEngine on
RewriteRule aboutus/$               about.php   [NC,L,QSA]
RewriteRule searchresults/(.*)/(.*)/$           searchresults.php?a=$1 & b=$2   [NC,L,QSA]
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector