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

时间:2014-03-10 08:47:06

标签: php .htaccess

我希望通过删除URL中的扩展来使我的域更加整洁。这是两个例子。

之前: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]

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

domain.ext/versionx/search.php

使用:

domain.ext/search.php

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

1 个答案:

答案 0 :(得分:0)

您可以改为使用此代码:

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]

如果因某些原因无法正常工作,请提供详细信息,例如哪些网址不起作用以及.htaccess的位置以及是否还有其他规则。