8 .htaccess mod-rewrite url-rewriting
我正在尝试将一些htaccess代码放在一起,将example.com/filename.php转换为example.com/filename/(并强制斜杠) - 我尝试了各种各样的方法,但每个方法都没有正常工作,从子文件夹上的500个错误到尾部斜杠的问题等...
请帮忙!
Gum*_*mbo 13
试试这个:
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteRule (.*)/$ $1.php [L]
Run Code Online (Sandbox Code Playgroud)
第一条规则将外部请求重定向到.第二条规则重写内部请求./foo/bar.php/foo/bar//foo/bar//foo/bar.php
要强制尾随斜杠,请尝试以下规则:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
小智 6
这个Gumbo解决方案非常适合文件,但它不适用于目录.换一种说法:
因为mysite.com/file1.php,它显示mysite.com/file1/哪个是伟大的.然而,它对目录不起作用.如果我尝试访问以下目录(其中包含index.php文件)mysite.com/dir1,而不是显示http:/mysite.com/dir1/index.php和url:的内容mysite.com/dir1/,则返回404.
我的解决方案是:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
换句话说,如果它是一个目录,不要做任何事情.
希望能帮助到你.
原始解决方案的另一个问题是,在我将路径更改为css文件并将图像更改为绝对路径之前,不会加载css和图像.
有没有其他方法可以解决它,而不是将网站中所有文件中的所有路径更改为绝对路径.
非常感谢.