RewriteRule RegEx - добавить еще один вариант сопоставления уровня подкаталога с URL - PullRequest
0 голосов
/ 24 января 2010

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

http://example.com/storevar?search_term    
http://example.com/storevar/?search_term    
http://example.com/storevar    
http://example.com/storevar/    
http://example.com/storevar/search_term    
http://example.com/storevar/search_term/    
http://example.com/storevar/search_term/mode    
http://example.com/storevar/search_term/mode/

Затем они должны передать информацию

http://example.com/process.php?store=$1&search=$2&mode=$3

Безусловно, следующая информация о файле .HTACCESS обрабатывает первые 6 элементов, но не информацию о «режиме».

Options +FollowSymLinks

RewriteEngine On

# For /storevar?search_term and /storevar/?search_term
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /process.php?store=$1&search=%{QUERY_STRING} [L]

# For /storevar/search_term, /storevar/search_term/ and /storevar/
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/]+)(?:/([^/]+))?/?$ /process.php?store=$1&search=$2 [QSA,L]

Мои навыки RewriteRule RegEx плохие, поэтому я не уверен, как справиться со всеми возможными вариациями.

Как бы я добавил вариации "mode"?

1 Ответ

1 голос
/ 24 января 2010

Для этих:

http://example.com/storevar/search_term/mode    
http://example.com/storevar/search_term/mode/

Используйте это:

RewriteRule ^(?!process\.php)([^/]+)(?:/([^/]+)(?:/([^/]+))?)?/?$ /process.php?store=$1&search=$2&mode=$3 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...