2013-09-09 4 views
0

У меня есть большая проблема с моими URL-адресами. Я знаю, как удалить index.php form url, но проблема в том, что я не знаю, удалить этот «? Act =» из url.mod_rewrite удаление имени строки запроса

Моя ссылка теперь HTTP: // локальный/Доктрина/государственный/акт = тест, и я хочу, чтобы создать его, как HTTP: // локальный/Доктрина/общественной/тест.

Мой текущий файл .htaccess помещен в папки:

<IfModule mod_rewrite.c> 
     RewriteEngine On 

     # Removes index.php from ExpressionEngine URLs 
     RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ index.php/$1 [L] 

</IfModule> 

мне нужна помощь, как сделать это.

ответ

0

Перед вашим выражением правила двигателя, вы можете добавить:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /doctrine/public/?act=$1 [L] 

Чтобы внутренне переписать запрос как http: //localhost/doctrine/public/test к /doctrine/public/?act=test. Вы должны убедиться, что ссылки в вашем контенте выглядят как /doctrine/public/test, а не тот, который содержит строку запроса. Если есть ссылки вне вашего контроля (например, Google индексируются страницы) вы можете добавить следующее:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /doctrine/public/?\?act=([^&\ ]+) 
Rewrite Rule^/doctrine/public/%1? [L,R=301] 

указать браузер на URL без строки запроса.

Это, к сожалению, не будет соответствовать вашим URL-адресам движка выражения.

0

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

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /doctrine/ 

    RewriteRule ^(public)/([^/]+)/?$ $1/?act=$2 [L,QSA,NC] 

    # Removes index.php from ExpressionEngine URLs 
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 

</IfModule>