Мод переписать с несколькими значениями - PullRequest
1 голос
/ 24 мая 2011

Я пытаюсь сделать что-то вроде этого ... Не знаю, где я иду не так.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)^/(.*)^/(.*)$ /$1/$2.php?page=$3 [L,QSA]

В основном я хочу иметь возможность вставить что-то вроде / item1 / item2 / item3 иимеют эти значения в $ 1, $ 2, $ 3 и т. д.

1005 * Спасибо

Ответы [ 3 ]

2 голосов
/ 24 мая 2011

Вместо .*, попробуйте использовать .+. Также обязательно учтите, что может быть косая черта:

RewriteRule ^/(.+)/(.+)/(.+)/$ /$1/$2.php?page=$3 [l,qsa]
RewriteRule ^/(.+)/(.+)/(.+)$ /$1/$2.php?page=$3 [l,qsa]
1 голос
/ 24 мая 2011

Используйте следующий код в вашем файле .htaccess:

Options +FollowSymlinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /$1/$2.php?page=$3 [L,QSA,NE]
0 голосов
/ 24 мая 2011

Когда происходит замена для нового URL-адреса, этот модуль должен повторно внедрить URL-адрес в обработку на сервере.Для того, чтобы сделать это, ему нужно знать, что такое соответствующий URL-префикс или URL-база.По умолчанию этот префикс представляет собой соответствующий путь к файлу.Но на большинстве веб-сайтов URL-адреса НЕ напрямую связаны с физическими путями к именам файлов, поэтому это предположение обычно неверно!Там вы должны использовать директиву RewriteBase, чтобы указать правильный URL-префикс.

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteBase

Так что, возможно, вам придется установить RewriteBase.Например, вы можете установить его в корневой каталог:

RewriteBase \

Кроме того, вы не можете использовать более одного ^ в вашем паттерне, поскольку это означает «начальную позицию строки».

...