我试图这样做,所以url中的news.php所有内容都被重定向到一个url,它会删除news.php并添加一个尾部斜杠。所以http://www.example.com/news.php/news/article到http://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]
答案 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]
现在一切似乎都在按我的意愿运作。