.htaccess只适用于它自己的目录


.htaccess only apply to it's own directory

我想通过删除URL中的扩展名来让我的域更整洁一些。下面是两个例子。

Before: domain.ext/index.php

后置:domain.ext/index/

这是我从另一个(不活跃的)问题中收集到的:

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]

现在我正在根目录下的另一个目录中开发,它替换了以下URL:

domain.ext/versionx/search.php

:

domain.ext/search.php

当然现在不存在。有没有办法修改这段代码,使它只影响自己目录下的文件?

您可以使用以下代码:

RewriteCond %{THE_REQUEST} 's/+(?:index)?(.*?)'.php['s?] [NC]
RewriteRule ^ /%1/ [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

如果由于某些原因不能工作,请提供详细信息,例如哪个url不能工作,.htaccess的位置以及是否有其他规则

相关文章: