.htaccess以相同的名称打开文件夹中的文件

.htaccess以相同的名称打开文件夹中的文件,.htaccess,.htaccess,我的项目开始变得有点混乱,我想用.htaccess文件来清理它。 现在,当我调用“page1”时,它被设置为重定向到“page1.html”或“page1.php” RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{RE

我的项目开始变得有点混乱,我想用.htaccess文件来清理它。 现在,当我调用“page1”时,它被设置为重定向到“page1.html”或“page1.php”

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
但我想要的是,当我重定向到“page1”时,它会打开“/page1/page1.html”或“/page1/page1.php”

我相信这应该可以通过htaccess实现,但我在这方面没有任何经验,所以我不能完全确定


提前感谢:)

我想你可以在这个链接中找到你的答案(也许标题似乎不相关,但肯定相关):

正如上面的链接所提到的,您可以使用以下方法来执行此操作(这用于给文件添加别名):


希望我已经理解了您的确切意思。

假设您正在尝试动态地执行此操作,您将需要以下内容:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]+)/?$ $1/$1.php [NC,L]
问题是服务器无法知道它应该提供
page1.php
还是
page1.html
。您最好将流量路由到一个php引导程序中,该引导程序执行类似于检查文件是否存在以及执行其中一项操作(如果这是您的最终任务)

如果你想压缩你的代码,但仍然有一点膨胀来处理哪些页面转到html和php,你可以这样做

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(page1|page2|page5)/?$ $1/$1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(page3|page4|page6)/?$ $1/$1.html [NC,L]

这至少可以让您只需要两个块就可以将每个页面放在一起。

如果您尝试动态地执行此操作,那么服务器应该如何知道是否应该将
/page1
重写为
/page1/page1.php
/page1/page1.html
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(page1|page2|page5)/?$ $1/$1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(page3|page4|page6)/?$ $1/$1.html [NC,L]