коллизии для правил в htaccess - PullRequest
0 голосов
/ 01 апреля 2011

Это мой htaccess файл

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php #Line 1
RewriteRule ^([a-zA-Z0-9_-]+)$ product.php?name=$1 #Line 2
RewriteRule ^([a-zA-Z0-9_-]+)/$ product.php?name=$1 #Line 3

Строка 1 - удалить расширение php для всех файлов. Строки 2 и 3 таковы, что если вы введете website.com/, он будет переведен на website.com/product.php?name=something

Теперь я установил блог с URL-адресом website.com/blog

.

Это мешает продукту. Таким образом, вместо того, чтобы обслуживать website.com/blog, он переводится на website.com/product.php?name=blog, который дает неверные результаты. Как можно решить эту проблему.

1 Ответ

4 голосов
/ 01 апреля 2011

Вам может пригодиться этот вопрос: Запросы на перенаправление, только если файл не найден?

# If requested resource exists as a file or directory, skip next two rules
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [S=2]
#
# Requested resource does not exist, do rewrite if it exists in /archive
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/archive/$1 -d
RewriteRule (.*) /archive/$1 [L]
#
# Else rewrite requests for non-existent resources to /index.php
RewriteRule (.*) /index.php?q=$1 [L]

Может также представлять интерес следующее: Как игнорировать каталог в mod_rewrite?

Попробуйте поставить это перед любыми другими правилами.

RewriteRule ^blog - [L,NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...