Перезапись URL с использованием .htaccess и mod_rewrite - PullRequest
0 голосов
/ 19 июня 2011

Я использовал этот код в своем .htaccess, чтобы переписать мои URL, как это:

www.example.com/subcategory.php?subcat=my-test
в
www.example.com/my-test

.htaccess код, который я использовал:

RewriteEngine on
RewriteCond $1 !^(subcategory\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subcategory.php?subcat=$1 [L,QSA]

Моя проблема заключается в том, что всякий раз, когда я получаю доступ к URL-адресу, не относящемуся к моему файлу subcategory.php, например, contactus и aboutus, файл .htaccess каким-то образом помещает меня в файл subcategory.php, который мне не нужен. Я хочу, чтобы мой contactus обрабатывался contactus.php и aboutus с aboutus.php.

Я знаю, что что-то не так с моим файлом .htaccess, но я не мог исправить это самостоятельно, потому что я не очень знаком с кодировкой .htaccess.

Любое предложение будет с благодарностью.

Большое спасибо!

1 Ответ

2 голосов
/ 19 июня 2011

Вы переписываете все запросы к subcategory.php..htaccess не может определить, является ли /xxx подкатегорией или другой страницей, поэтому вы можете перенаправить его на другой сценарий.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

Используйте этот фрагмент кода вместо своего и переместитевся логика «маршрутизации» в PHP.В PHP вы можете узнать, является ли / xxx подкатегорией, страницей контактов, статьей или чем-то еще, и использовать сценарий, подходящий для такой записи базы данных.

Запрошенный URL-адрес вы найдете в $_SERVER['REQUEST_URI'].

...