mod_rewrite для нескольких запросов не работает - PullRequest
0 голосов
/ 14 октября 2011

Возможно, кто-то может помочь мне с этим, прежде чем я сойду с ума от этого. У меня есть сайт с двумя URL, которые я хочу перенаправить.

Я хочу, чтобы весь трафик, кроме страниц галереи, шел на index.php.

Это мой htaccess:

php_flag magic_quotes_gpc Off

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]


RewriteRule ^(.*)$ /index.php?/$1

RewriteRule ^gallery(/((([a-zA-Z0-9-]+)(/(\d+))?)/?)?)?$ gallery.php?groupId=$4&showpage=$6 [NC,QSA,L]

Это работает за исключением одной части. Правило перезаписи для галереи работает не полностью. Он отправляет через groupId в скрипт gallery.php, но я не получаю аргумент showpage. Фактически, когда страница показа включена в URL, я получаю 404. Так, например.

Они работают и корректно обрабатываются правилом перезаписи

gallery

gallery/

gallery/mygroup

gallery/mygroup/

Это не работает и выбрасывает 404.

gallery/mygroup/2

Ничто из того, что я делаю, не может исправить это, и я был бы признателен за вашу помощь в этом Если я установил выставочную страницу. Скрипт галереи работает, если я кормлю его старым

gallery.php?groupId=mygroup&showpage=2

поэтому я уверен, что правило htaccess не перехватывает URL.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2011

Ваше регулярное выражение кажется немного чрезмерным.Вместо этого используйте два более простых правила перезаписи:

RewriteRule ^gallery/([a-zA-Z0-9-]+)/?$ gallery.php?groupId=$1 [NC,QSA,L]
RewriteRule ^gallery/([a-zA-Z0-9-]+)/(\d+)/?$ gallery.php?groupId=$1&showpage=$2 [NC,QSA,L]
...