htaccess的代码删除扩展,并添加+力斜线?htaccess的代码删除扩展,并添加+力斜线?(h

2019-05-12 03:03发布

我试图把一些htaccess的代码,会变成example.com/filename.phpexample.com/filename/(并迫使斜杠) -我试过varous方法,但每个没有工作完全正确,从子文件夹500错误与斜线等问题...

请帮忙!

Answer 1:

试试这个:

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]


Answer 2:

甘博的这种解决方案的文件的伟大工程,但它不与目录工作。 换一种说法:

对于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文件和图像的绝对路径的路径。

是否有任何其他的方式来解决它,而不是改变在网站上绝对的所有文件中的所有路径。

非常感谢。



Answer 3:

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]

工程就像一个魅力 - 感谢您的帮助乡亲。



Answer 4:

你可以尝试关闭工作的问题在这里 。 虽然解决问题的办法是不相关的(还...)这个问题本身就提供了一套您可以在自己的网站上使用重写规则。

如果您需要在URL中的符号,你可以只用“*”,而不是具体的A-ZA-Z0-9,但如果你正在寻找一个可能的尾随斜线,你可能想使用“ *?” 代替。 这是一个标准的正则表达式功能,以避免贪婪“ *”。



Answer 5:

对于路径,您可以添加<base href="yourpath" />你的PHP页面。



Answer 6:

试试这个,这一个工程上我的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]


文章来源: htaccess code to remove extension AND add+force trailing slash?