2013-09-04 4 views
2

У меня проблема с правилом перезаписи мод в области НЕ РАБОТАЮЩАЯ :) У меня есть сайт проекта, который является просто сайтом возврата ajax. Мне нравится открывать свой сайт на sitename.com/my-test/project/test.html и переписывать файл sitename.com/my-test/project.html?index=test. Я знаю, что после моего переписывания правила перезаписи cms должны проходить его работу. Я не уверен, возможно, это проблема, и они пересекаются или разбиваются.apache mod_rewrite - переписать правило

Если я просматриваю URL-адреса через браузер, все будет работать нормально, только правило перезаписи не будет работать, и я становлюсь сумасшедшим и не могу найти проблему.

Так что я надеюсь, что кто-то может мне помочь.

REWRITE CONFIG в .htaccess

RewriteEngine On 
    RewriteBase/

    #### WOULD NOT WORK ###### 
    # REWRITE AJAX PROJEKT 
    RewriteCond %{REQUEST_URI}% ^my-test/projects/[a-zA-Z0-9]+\.html$ [NC] 
    RewriteRule ^my-test/projects/[a-zA-Z0-9]+\.html my-test/projects.html?index=$1 

    ### WORK CORRECTLY #### 
    # REWRITE RULE FOR SEO FRIENDLY IMAGE MANAGER URLS 
    RewriteRule ^files[0-9]*/imagetypes/([^/]*)/([^/]*) index.php?rex_img_type=$1&rex_img_file=$2 

    # DON'T REWRITE IF REAL FILE, FOLDER OR SYMLINK EXISTS 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 

    # EXCLUDE SPECIFIC FOLDERS FROM REWRITE ENGINE 
    RewriteCond %{REQUEST_URI} !/files[0-9]*/ 
    RewriteCond %{REQUEST_URI} !/assets/.* 
    RewriteCond %{REQUEST_URI} !/media/.* 
    RewriteCond %{REQUEST_URI} !/redaxo/.* 

    # REWRITE ALL OTHER REQUESTS TO INDEX.PHP 
    RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L] 

и я также протестировали

RewriteCond %{REQUEST_URI}% ^/my-test/projects/[a-zA-Z0-9]+\.html$ [NC] 
    RewriteRule ^/my-test/projects/[a-zA-Z0-9]+\.html my-test/projects.html?index=$1 
    #OR JUST 
    RewriteRule ^/my-test/projects/[a-zA-Z0-9]+\.html$ my-test/projects.html?index=$1 
    #OR 
    RewriteRule ^/my-test/projects/(.*)$ my-test/projects.html?index=$1 
    #AND CORRECT 
    RewriteCond %{REQUEST_URI} ^/my-test/projects/[a-zA-Z0-9]+\.html$ [NC] 
    RewriteRule ^/my-test/projects/[a-zA-Z0-9]+\.html my-test/projects.html?index=$1 
    #AND --- 
    RewriteRule ^my-test/projects/([a-zA-Z0-9]+)\.html my-test/projects.html?index=$1 [L] 

Я не нашел ответ, поэтому я действительно надеюсь, что кто-то может помочь мне

Спасибо всем

ng moxx

ответ

0
RewriteCond %{REQUEST_URI}% ^my-test/projects/[a-zA-Z0-9]+\.html$ [NC] 
RewriteRule ^my-test/projects/[a-zA-Z0-9]+\.html my-test/projects.html?index=$1 

У вас есть дополнительные % в конце вашего пребывания: %{REQUEST_URI}%. Это означает, что это должен быть URI запроса, за которым следует %, а текст справа заканчивается на html, что означает, что это условие всегда терпит неудачу.

Кроме того, переменная %{REQUEST_URI}начинается с /. Обратите внимание, что ведущая косая черта исчезает, когда используется для соответствия шаблону в правиле перезаписи.

На самом деле вам не требуется условие.

RewriteRule ^my-test/projects/([a-zA-Z0-9]+)\.html my-test/projects.html?index=$1 [L] 
+0

Hi, thx для быстрого воспроизведения. исправить не будет работать :( – moxx

+0

@ user1807046 См. правило в конце ответа еще раз, вам не хватало группы захвата (круглые скобки) –

+0

thx также не работает: (((работает только RedirectMatch, это не оптимизация SEO - > RedirectMatch ^/my-test/projects/([a-zA-Z0-9] +) \. Html http://sitename.com/my-test/projects.html?index=$1 – moxx

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