htaccess:隐藏文件夹和隐藏子文件夹链接中的文件扩展名



我有这些文件夹结构:

domain.com/pages/index.php
domain.com/pages/about/a-page.php
domain.com/pages/service/service-type/service-name.php

我希望他们像:

domain.com/index
domain.com/about/a-page
domain.com/service/service-type/service-name

这些是我到目前为止所拥有的:

#remove folder name on link e.g. https://example.com/pages/file.php will become https://example.com/file.php 
RewriteEngine On
RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pages/$1
#remove php file extension-e.g. https://example.com/file.php will become https://example.com/file 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L] 

老实说,我只是从教程中复制了这个......并尝试了与我类似的问题的其他建议,这些在某种程度上是我能达到的最接近我的目标。

在看了很多 htaccess 教程后,我发现它应该是

RewriteEngine On
#remove php file extension-e.g. https://example.com/file.php will become https://example.com/file 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L] 
#remove folder name on link e.g. https://example.com/pages/file.php will become https://example.com/file.php 
RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pages/$1 [NC,L] 

所以我不应该忘记重写规则中的 [L] 部分,因为它不会读取不适合它的其他重写条件。

最新更新