Apache .htaccess将文件名URL的请求重写为相应的永久链接URL

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

我有一个关于.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.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重定向到单个文档。干杯。谢谢:)我当然会的!