2014-10-22 2 views
2

Я пытаюсь создать два RewriteRules, но не могу заставить mod_rewrite играть хорошо..htaccess RewriteRule условные обозначения?

То, что я пытаюсь достичь следующих ...

domain.com/my/friendly/url = domain.com/index.php?a=$1

Это один достаточно простой, но я стараюсь, чтобы проверить наличие ряда (произвольной длины), чтобы затем добавьте в качестве второго параметра запроса.

Например

domain.com/my/friendly/url/100 = domain.com/index.php?a=$1&id=$2

Где $1 является my/friendly/url и $2 является 100.

Я пробовал многочисленные шаблоны без успеха. Мой файл .htaccess остается похожим на этот и не работает.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)(\/[0-9]+)$ index.php?a=$1&id=$2 [L,QSA] 
RewriteRule ^(.*)$ index.php?a=$1 [L,QSA] 

ответ

1

Вы можете иметь свои правила, как это:

# ignore all rules for real files or directories 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^(.+?)/([0-9]+)/?$ index.php?a=$1&id=$2 [L,QSA] 

RewriteRule ^(.+)$ index.php?a=$1 [L,QSA] 
+0

Работает лакомство! Большое спасибо! –

+0

Я заметил, что 2 RewriteCond нарушали весь код, но я хотел бы понять, почему **, поскольку эти RewriteRule были правильными? – zessx

+0

1. Основной проблемой было регулярное выражение, используемое в первом «RewriteRule» OP. 2. «RewriteCond» применим только к следующему «RewriteRule» не ко всем «RewriteRule». – anubhava

Смежные вопросы