2014-10-01 2 views
1

у меня есть это в моей .htaccessмод-переписать не работает, как ожидалось

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9&j=$10&k=$11&l=$12&m=$13 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9&j=$10&k=$11&l=$12 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9&j=$10&k=$11 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9&j=$10 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8&i=$9 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5&f=$6 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4&e=$5 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3&d=$4 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)/(.*)$ index.php?a=$1&b=$2&c=$3 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)$ index.php?a=$1&b=$2 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?a=$1 [QSA,L] 

Что она делает, это переписывание что-то вроде:

http://www.domain.com/project/backend?a=moderate&b=overview&c=29&d=stoptober&e=page&f=1&g=filter&h=no-twitter&i=no-instagram&j=test&k=test2&l=no-text

в

http://www.domain.com/project/backend/moderate/overview/29/stoptober/page/1/filter/no-twitter/no-instagram/test/test2/no-text

Но когда я var_dump это, он показывает это:

array(12) { 
    ["a"]=> 
    string(8) "moderate" 
    ["b"]=> 
    string(8) "overview" 
    ["c"]=> 
    string(2) "29" 
    ["d"]=> 
    string(9) "stoptober" 
    ["e"]=> 
    string(4) "page" 
    ["f"]=> 
    string(1) "1" 
    ["g"]=> 
    string(6) "filter" 
    ["h"]=> 
    string(10) "no-twitter" 
    ["i"]=> 
    string(12) "no-instagram" 
    ["j"]=> 
    string(9) "moderate0" 
    ["k"]=> 
    string(9) "moderate1" 
    ["l"]=> 
    string(9) "moderate2" 
} 

Как это возможно? И что более важно, как я могу это исправить?

ответ

1

Backreferences находятся между $0 и $9 в комплекте.

Если вы пытаетесь $10 это то же самое, как $1 с 0 в конце, объясняющей moderate0 ($1 = moderate).

Решение: вам необходимо уменьшить свои параметры. Это проблема Ури дизайн


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

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

# all your RewriteRule here 
+0

Я уже думал, что после того, как я прочитал ваш комментарий, но я прочитал ваш комментарий после того, как создал этот вопрос – SheperdOfFire

0

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

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    Options -Indexes 
    RewriteEngine On 

    RewriteRule ^([^/]*)/$ index.php?select=$1 [L] 
    RewriteRule ^([^/]*)/$ ?select=$1 [L] 
    RewriteRule ^([^/]*)/([^/]*)/$ index.php?select=$1&a=$2 [L] 
    RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ index.php?select=$1&a=$2&b=$3 [L] 
    RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ index.php?select=$1&a=$2&b=$3&c=$4 [L] 

    RewriteCond %{REQUEST_URI} /+[^\.]+$ 
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 

</IfModule> 
Смежные вопросы