2013-10-01 3 views
1
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ product.php?ref=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ /category.php?sub=$1 [L] 

значения, посланное с переменными конфликтами подразделов со значениями из иогоHtaccess правило конфликт с другим правилом

product.php?ref=$1 [L] 
category.php?sub=$1 [L] 
+0

Правила повторно неправильно, так как первый и третий правило будет соответствовать один и тот же шаблон URI '^ ([^ /] *) $' и то, что правило в top будет иметь приоритет. – anubhava

+0

ok как я могу это решить: \ –

+0

Вам нужно выбрать другой шаблон URL для /category.php? Sub = 'обработчик, а другой для' /product.php? Ref = ' – anubhava

ответ

1

С небольшим количеством изменений следующий код должен работать:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

# don't do anything for a valid file or directory 
RewriteCond %{ENV:REDIRECT_STATUS} !^$ [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

# Product handler /i/test 
RewriteRule ^i/([^/]+)/?$ /product.php?ref=$1 [L,NC,QSA] 

# PHP handler 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+)$ /$1.php [L] 

# category handler 
RewriteRule ^([^/]+)/?$ /category.php?sub=$1 [L,QSA] 
+0

Внутренняя ошибка сервера Сервер столкнулся с внутренним ошибки или неправильной конфигурации и не смог выполнить ваш запрос. Обратитесь к администратору сервера, [email protected] и сообщите им о том, что произошло с ошибкой, и все, что вы могли бы сделать, что могло привести к ошибке. Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера. Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 500 Internal Server Error. –

+0

У меня была опечатка в первом правиле, сделана коррекция, попробуйте еще раз. – anubhava

+0

same problem: \ –

2

Моего совет для любого рода правил перезаписи, намеревающихся некоторых формы семантических URL-адресов, то есть:

/home 

вместо

index.php?page=home 

Сделайте одно правило, которое захватывает все URL-адреса, например:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ handler.php?__url=$1 [QSA] 

Тогда есть handler.php выяснить, что вы хотите сделать.

Вы знаете свои категории и продукты, поэтому, если URL-адрес /[product|category], тогда обработайте его.

+0

У меня есть 2 страницы, которые я хочу контролировать с помощью htaccess в первой категории, и я отправляю ей имя переменной sub, чтобы передать значение, а другая страница - это продукт, который передал значение через ref vaiable. –

Смежные вопросы