我试图把一些htaccess的代码,会变成example.com/filename.php成example.com/filename/(并迫使斜杠) -我试过varous方法,但每个没有工作完全正确,从子文件夹500错误与斜线等问题...
请帮忙!
我试图把一些htaccess的代码,会变成example.com/filename.php成example.com/filename/(并迫使斜杠) -我试过varous方法,但每个没有工作完全正确,从子文件夹500错误与斜线等问题...
请帮忙!
试试这个:
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteRule (.*)/$ $1.php [L]
第一条规则重定向的请求/foo/bar
.php
内外兼修/foo/bar
/
。 第二条规则重写的请求/foo/bar
/
内部到/foo/bar
.php
。
并迫使结尾的斜线,试试这个规则:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
甘博的这种解决方案的文件的伟大工程,但它不与目录工作。 换一种说法:
对于mysite.com/file1.php
,它显示mysite.com/file1/
这是伟大的。 然而,它并不适用于目录工作。 如果我尝试访问以下目录(包含内index.php文件) mysite.com/dir1
,而不是显示的内容http:/mysite.com/dir1/index.php
和网址: 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]
换句话说,没有做任何事情,如果它是一个目录。
希望能帮助到你。
与原来的解决方案的另一个问题是,CSS和图像不加载,直到我换到CSS文件和图像的绝对路径的路径。
是否有任何其他的方式来解决它,而不是改变在网站上绝对的所有文件中的所有路径。
非常感谢。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
工程就像一个魅力 - 感谢您的帮助乡亲。
你可以尝试关闭工作的问题在这里 。 虽然解决问题的办法是不相关的(还...)这个问题本身就提供了一套您可以在自己的网站上使用重写规则。
如果您需要在URL中的符号,你可以只用“*”,而不是具体的A-ZA-Z0-9,但如果你正在寻找一个可能的尾随斜线,你可能想使用“ *?” 代替。 这是一个标准的正则表达式功能,以避免贪婪“ *”。
对于路径,您可以添加<base href="yourpath" />
你的PHP页面。
试试这个,这一个工程上我的Apache,甚至当你手动删除最后一个斜线:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]