Apache .htaccess将文件名URL的请求重写为相应的永久链接URL
我有一个关于.htaccess代码的问题。它正在做以下工作:Apache .htaccess将文件名URL的请求重写为相应的永久链接URL,apache,.htaccess,redirect,mod-rewrite,url-rewriting,Apache,.htaccess,Redirect,Mod Rewrite,Url Rewriting,我有一个关于.htaccess代码的问题。它正在做以下工作: 向每个URL添加尾部斜杠 删除.php文件扩展名 这是可行的,因此如果我键入domain.com/page/,浏览器将显示domain.com/page.php的内容。如果我键入domain.com/page(不带尾随斜杠),浏览器将重定向到domain.com/page/ 但是如果我键入domain.com/page.php浏览器不会重定向到domain.com/page/ 有没有办法将请求重定向到domain.com/page.p
domain.com/page/
,浏览器将显示domain.com/page.php
的内容。如果我键入domain.com/page
(不带尾随斜杠),浏览器将重定向到domain.com/page/
但是如果我键入domain.com/page.php
浏览器不会重定向到domain.com/page/
有没有办法将请求重定向到domain.com/page.php
到domain.com/page/
这是我当前的.htaccess代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !(^$|\.[a-zA-Z0-9]{1,5}|/)$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^((/?[^/]+){1,2})/$ $1.php [L]
谢谢你的帮助 对于您展示的样品,请尝试以下内容。 请确保在测试URL之前清除浏览器缓存
RewriteEngine ON
##First 2 rules are added by OP itself.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !(^$|\.[a-zA-Z0-9]{1,5}|/)$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^((/?[^/]+){1,2})/$ $1.php [L]
##Newly added rule for removing .php from browser if .php is hit in it.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
非常感谢你!这对我有用:)只有两个问题:1。如果我请求一个不存在的文件,例如
domain.com/bla.php
,它也会被重定向到domain.com/bla/
,然后显示我的404错误页面。这是一个问题吗?如果它返回404,它应该不会影响我的搜索引擎优化,对吗?2.我可以使用domain.com/folder/
和domain.com/folder/index/
访问文件夹(domain.com/folder/index.php
被重定向到后者)。谷歌应该认识到这两个URL是相同的,特别是如果我声明了一个规范的URL,对吗?@user15374596,IMHO你可以通过Errordocument 404规则处理它,只需将任何404重定向到单个文档。干杯。谢谢:)我当然会的!