1

概要:


localhost/root/admin 是我希望 /root/admin 转到 /root/index.php?url=admin 而不更改地址栏中的 url的现有文件夹。

唯一的例外是请求的文件是图像

这是我为 localhost/root 中的 .htaccess 文件编写的内容,以尝试执行所有这些操作:

RewriteEngine On
RewriteBase /root/

RewriteCond %{REQUEST_URI} !index\.php$
RewriteCond %{REQUEST_URI} !(.*\.(png|jpg|gif))$ [NC]
RewriteRule (.*) index.php?url=$1 [QSA,L]

而是将 localhost/root/admin 重定向到 localhost/root/index.php 并将地址栏中的 url 更改为 localhost/root/admin/?url=admin。

如果我在“admin”上添加一个斜杠(/),它不会这样做。

我知道,在我的 mac 笔记本电脑上,这个 mod_rewrite 代码完全符合它的意思,但只有在“站点”文件夹而不是 localhost htdocs 文件夹中运行它时。

关于我能做些什么来解决这个问题的任何想法?

4

1 回答 1

0

我认为您只是缺少“PT”标志以防止实际重定向。PT(直通)意味着 Apache 重定向内部提供的资源,但浏览器看到的是相同的 URL。(有关详细信息,请参阅 Apache wiki:http ://wiki.apache.org/httpd/RewriteFlags/PT )

RewriteEngine On
RewriteBase /root/

RewriteCond %{REQUEST_URI} !index\.php$
RewriteCond %{REQUEST_URI} !(.*\.(png|jpg|gif))$ [NC]
RewriteRule (.*) index.php?url=$1 [PT,QSA,L]

请注意,唯一的变化是添加了标志。我在我的服务器上对此进行了测试,并看到了我认为你想要的行为。

于 2012-12-13T22:09:57.363 回答