.htaccess 如何重写除一个特定URI之外的所有请求

bybem2ql  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(113)

下面是我的根路径文件夹内容:

/public
/src
/script
/etc

我使用以下代码成功地重写了对/public文件夹所有请求:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

我的问题是我需要从浏览器访问/script/script. php,它当前正在返回

NOT FOUND The requested URL was not found on this server.

我尝试了很多我在stackoverflow上创建的东西,但是我对Apache 2 .htaccess真的不放心(但是需要在共享主机上使用它)
有人知道如何实现我想做的吗?谢谢

2guxujil

2guxujil1#

按照下面的方式创建你的.htaccess规则文件。我在你最后一个RewriteRule之前添加了一个条件,因为你想访问script.php,所以最好在最后一个规则之前添加一个合适的条件。
此外,请确保在测试URL之前清除浏览器缓存。

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1? [L,NE,R=302]

RewriteCond %{THE_REQUEST} !\s/script/script\.php/?\??\S*\s [NC]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

相关问题