MOD_REWRITE не работает должным образом - PullRequest
0 голосов
/ 25 января 2012

Это не работает:

RewriteRule ^([^/]+)([/]?)$ /index.cgi?l=$1 [NC,L]

Это не работает:

RewriteRule ^([^/]+)/?$ /index.cgi?l=$1 [NC,L]

В файле .htaccess нет других правил. Вот полная версия:

Options -Indexes
Options ExecCGI
AddHandler cgi-script .cgi .pl .q
ErrorDocument 500 /error500.cgi
ErrorDocument 404 /error404.cgi
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/?$ /index.cgi?l=$1 [NC,L]

Это работает, но это не то, что я хочу.

RewriteRule ^([^/]+)/([^/]+)$ /index.cgi?l=$1&a=$2 [NC,L]

Я хочу, чтобы первый слеш и второй каталог были необязательными. Почему знак вопроса не соответствует 0 или 1 экземплярам, ​​как это должно быть? Я волнуюсь здесь ...

1 Ответ

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

Используя $, вы указываете, что это конец текста, так что после / ничего не будет совпадать. (в регулярном выражении ^ указывает начало строки, а $ указывает конец)

Вы можете удалить $, тогда второй параметр станет необязательным - это звучит так, как вы ищете.

Попробуйте проверить, правильно ли работает ваш mod_rewrite:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [R,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...