使用htaccess和apache添加斜杠和重定向页面

时间:2014-05-01 19:36:13

标签: apache .htaccess redirect expressionengine

我试图这样做,所以url中的news.php所有内容都被重定向到一个url,它会删除news.php并添加一个尾部斜杠。所以http://www.example.com/news.php/news/articlehttp://www.example.com/news/article/

我已经能够用这个

删除news.php了
RewriteRule  ^(news|health|tips|weight|P[0-9]{2,8})$ $1/ [NC]
RewriteCond $1 ^((news|health|tips|weight|P[0-9]{2,8})/) [NC]
RewriteRule ^(.*)$ /news.php/$1 [L]

我尝试在上面的行中添加一个尾部斜杠,它什么也没做。 我也试过下面的东西,它增加了一个斜线,但没有删除news.php。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /news.php/$1/ [R=301,L]

有人能帮帮我吗我不知道该怎么办?

我还有一些其他规则

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_FILENAME}.php -f  

RewriteCond %{QUERY_STRING} ^(ACT=.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(URL=.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(CSS=.*)$ [NC]   
RewriteRule ^$ /news.php\?&%{QUERY_STRING} [L] 

RewriteRule ^(.*)$ $1.php [L,QSA]     
RewriteCond %{HTTP_HOST} !^www2\. 
RewriteRule ^(.*)$ http://www2.%{HTTP_HOST}/$1 [R=301,L]

2 个答案:

答案 0 :(得分:2)

您需要一个额外的规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} /news\.php/\S+ [NC]
RewriteRule ^news\.php/(.+?)/?$ /$1/? [R=301,L]

RewriteCond $1 ^((news|health|tips|weight|P[0-9]{2,8})/) [NC]
RewriteRule ^(.+)$ /news.php/$1 [L]

编辑:要为所有非文件添加尾部斜杠:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

答案 1 :(得分:0)

好的,所以我把anubhava的第一个块改为

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

现在一切似乎都在按我的意愿运作。