2015-10-21 4 views
0

Я уже пытался прочитать здесь вопросы пыльников, но они не работают для меня.Перепишите длинный url с .htaccess

Сегодня мой .htaccess, как это

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 

    # Ignore sitemap folder 
    RewriteCond %{REQUEST_URI} !^/myapps/.*$ 

    # Get rid of index.php 
    RewriteCond %{REQUEST_URI} /index\.php 
    RewriteRule (.*) index.php?rewrite=2 [L,QSA] 

    # Rewrite all directory-looking urls 
    RewriteCond %{REQUEST_URI} /$ 
    RewriteRule (.*) index.php?rewrite=1 [L,QSA] 


    Redirect /acompanhantes h t t p://mysite.com/members?profile_type=4&displayname=&location=&within=50&lat=0&long=0&order=az&show=&1_4_9_alias_gender=&1_4_10_alias_birthdate%5Bmin%5D=&1_4_10_alias_birthdate%5Bmax%5D=&1_1_5_alias_gender=&1_1_6_alias_birthdate%5Bmin%5D=&$ 

    # Try to route missing files 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} public\/ [OR] 
    RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$ 
    RewriteRule . - [L] 

    # If the file doesn't exist, rewrite to index 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA] 

</IfModule> 

Как вы можете видеть, я обращаю длинный URL в mysite.com/acompanhte

Так, как я бы не перенаправить. Я бы хотел переписать. Возможно? Как?

ответ

0

Несколько вещей:

  1. Условие переписывание должно быть связано с правилом, поэтому он применяется к сразу после переписывания правила. У вас есть условие наверху, которое, похоже, ничего не делает, поскольку оно применяется к правилу index.php.

  2. директива Redirect является частью mod_alias и как это работает: Redirect A B, где является запрашиваемый URL и B, где она перенаправляет TO. Это означает, что вы должны ввести URL-адрес в свой браузер, а затем он сообщает обозревателю изменить местоположение до B.

  3. Кроме того, (с # 2), что означает, что для того, чтобы этот редирект, чтобы сделать что-нибудь полезное, вы должны быть в состоянии типа B URL в ваш браузер и его вернуть то, что вы ожидали (и не что-то как ошибка).

  4. Поскольку Redirect является mod_alias и правила перезаписи являются mod_rewrite, два модуля будут мешать друг другу и обрабатывать запросы в два раза, так что вам нужно просто придерживаться mod_rewrite здесь и использовать R флаг.

Возможно, вы хотите что-то вроде этого?

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 

    RewriteCond %{THE_REQUEST} \ /+members?profile_type=4&displayname=&location=&within=50&lat=0&long=0&order=az&show=&1_4_9_alias_gender=&1_4_10_alias_birthdate%5Bmin%5D=&1_4_10_alias_birthdate%5Bmax%5D=&1_1_5_alias_gender=&1_1_6_alias_birthdate%5Bmin%5D= 
    RewriteRule^/acompanhantes [L,R] 

    # Ignore sitemap folder (passthrough these requests) 
    RewriteRule ^myapps/ - [L] 

    # Get rid of index.php 
    RewriteCond %{REQUEST_URI} /index\.php 
    RewriteRule (.*) index.php?rewrite=2 [L,QSA] 

    # Rewrite all directory-looking urls 
    RewriteCond %{REQUEST_URI} /$ 
    RewriteRule (.*) index.php?rewrite=1 [L,QSA] 

    # Try to route missing files 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} public\/ [OR] 
    RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$ 
    RewriteRule . - [L] 

    # If the file doesn't exist, rewrite to index 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA] 

</IfModule> 
+0

Танки, но не работают :( –

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