Простые ссылки на несколько продуктов в файле .htaccess не работают - PullRequest
0 голосов
/ 29 июня 2010
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product.php?pid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product2.php?cid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product3.php?bid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

Невозможно получить доступ к файлам product2.php или product3.php ...

Пожалуйста, помогите ...

1 Ответ

0 голосов
/ 29 июня 2010

Все ваши регулярные выражения RewriteRule одинаковы, поэтому они будут совпадать только в первый раз, преобразуют URL-адрес в product.php?pid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC], а затем ничего не будут делать (флаг L указывает, что он не будет совпадать ни с одним дополнительные правила для этого запуска, а затем после перезаписи URL на product.php, product.php не будет соответствовать ни одному из других правил на следующем проходе).

Кроме того, нет необходимости добавлять &%{QUERY_STRING}, если вы передаете флаг QSA, так как это автоматически добавляет строку запроса в измененную строку запроса, полученную из вашего RewriteRule.

Я понимаю, что вы ожидаете, что он получит доступ к этим двум другим страницам, но вам нужно будет описать, какие входные URL-адреса должны сопоставляться с каждым конкретным файлом, чтобы любой мог помочь вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...