我已经尝试了一段时间坚果却无法开始工作:
RewriteRule ^([^])/([^])\.php$ /$1.php [L,QSA]
我有一个网站: www.mysite.com/dummyfolder/file.php
我希望它实际加载:
www.mysite.com/file.php
仅供参考 - 虚拟文件夹是动态的,因此会发生变化。
更复杂的部分,我希望能够忽略某些文件夹,例如能够访问:www.mysite.com/acutalfolder/file.php。 acutalfolder存在且不改名的地方。
非常感谢 - 它真的让我陷入困境,无法理解。
Ansari,感谢您的回答和解决,但我需要更正我的实际文件夹声明:
我的实际文件夹位于:
www.mysite.com/acutalfolder/file.php
但我希望像这样出现在网址中:
www.mysite.com/dummyfolder/acutalfolder/file.php
如果我使用它(如果我使用的是实际文件夹,则尝试忽略):
RewriteRule ^([^/]+)(!^actualfolder$)/([^/]+)\.php$ /$2.php [L,QSA]
它可以很好地转到实际的文件夹地址,但原来的重写页面不再有效。我遇到这个错误的任何想法?
更新在安萨里的帮助下。现在使用以下代码可以很好地工作:
RewriteCond %{REQUEST_URI} ^/([^/]+)/(actualfolder/.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
RewriteCond %{REQUEST_URI} ^/(?!actualfolder)([^/]+)/(.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
非常感谢......
答案 0 :(得分:2)
试试这个:
RewriteRule ^([^/]+)/([^/]+)\.php$ /$2.php [L,QSA]
至于何时存在实际文件夹,除非你在实际文件夹中的另一个.htaccess文件中进行一些重写,否则你不需要为此做任何事情。
OP重新提出问题之后编辑:
RewriteCond %{REQUEST_URI} ^/([^/]+)/(actualfolder/.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
答案 1 :(得分:0)
更新在安萨里的帮助下。现在使用以下代码可以很好地工作:
RewriteCond %{REQUEST_URI} ^/([^/]+)/(actualfolder/.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
RewriteCond %{REQUEST_URI} ^/(?!actualfolder)([^/]+)/(.*\.php)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule .* %2 [L,QSA]
非常感谢......