目前,我正在使用以下htaccess代码从http://www.domain.com/folder/file.php加载http://www.domain.com/file,从网址中删除文件夹名称“/ folder /”和文件扩展名“.php”。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/folder%{REQUEST_URI}\.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/folder%{REQUEST_URI} -d
RewriteRule ^(.*)$ /folder/$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
现在,我尝试做的几乎相同,但是使用存储在子文件夹中的文件。
因此,换句话说,我想从http://www.domain.com/folder/subfolder/file.php
致电http://www.domain.com/subfolder/file在这种情况下,隐藏扩展文件不是问题,因为上面代码中的最后两行是全局工作的,问题在于重写只是通过添加“子文件夹”名称才起作用。我认为这会起作用,但事实并非如此:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/folder/subfolder%{REQUEST_URI}\.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/folder/subfolder%{REQUEST_URI} -d
RewriteRule ^(.*)$ /folder/subfolder/$1.php [L]
我感谢任何帮助。
答案 0 :(得分:2)
用这个替换你的两个规则:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/folder/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /folder/$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]