Перезапись URL для двух URL не будет работать правильно - PullRequest
0 голосов
/ 09 января 2012

У меня есть следующие URL-адреса, которые мне нужно переписать: product.php? Iata = TV & product = 12345 для product / Televison / TV / Sony-Bravia / 12345

и

product-list.php? iata = TV to product-list / Television / TV

В моем файле htaccess есть следующие правила перезаписи:

RewriteRule [^/]+/([A-Za-z]+)/[^/]+/([0-9]+) product.php?iata=$1&product=$2 [L,QSA,NC]
RewriteRule [^/]+/([A-Za-z]+) product-list.php?iata=$1 [L,QSA,NC]

, но они работают неправильно.Пожалуйста, кто-нибудь может помочь.

Кроме того, что если в product-list.php также есть две переменные запроса?Будет ли правило противоречить правилу product.php?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Попробуйте это:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^product/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)$ product.php?iata=$2&product=$4 [QSA,NC,L]
RewriteRule ^product-list/([^/\.]+)/([^/\.]+)$ product-list.php?iata=$2 [QSA,NC,L]

Подскажите, работает ли он


Два совета:

Если вы находитесь не в размещенной среде (= если это ваш собственный сервер и вы можете изменять виртуальные хосты, а не только файлы .htaccess), попробуйте использовать директиву RewriteLog: она помогает вам отслеживать такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)

0 голосов
/ 09 января 2012

Поместите этот код в ваш файл .htaccess:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule ^product-list/[^/]+/(.*)$ product-list.php?iata=$1 [L,QSA,NC]
RewriteRule ^product/[^/]+/([^/]+)/[^/]+/(.*)$ product.php?iata=$1&product=$2 [L,QSA,NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...