1

我已经尝试了一段时间,只是无法开始工作:

RewriteRule ^([^])/([^])\.php$ /$1.php [L,QSA]

我有一个网站:www.mysite.com/dummyfolder/file.php

我希望它实际加载:

www.mysite.com/file.php

仅供参考 - dummyfolder 是动态的,因此会发生变化。

更复杂的部分是我希望能够在某些文件夹上忽略它,例如能够访问:www.mysite.com/acutalfolder/file.php。acutalfolder 存在且不更改其名称的位置。

非常感谢 - 它真的让我陷入困境,无法弄清楚。

Ansari,感谢您的回答和解决,但是我需要更正我的实际文件夹声明:

我的实际文件夹位于此处:

www.mysite.com/acutalfolder/file.php 

但我想像这样出现在 URL 中:

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]

非常感谢...

4

2 回答 2

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]
于 2012-05-24T20:59:30.323 回答
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]

非常感谢...

于 2012-05-25T09:31:47.777 回答