2009-12-01 222 views
0

我有我的机器上开发站点在为什么这个mod重写规则不起作用?

localhost/~Jason/hfh/admin/?admin=collections 

我的.htaccess文件在/ HFH /管理/目录。它说:

RewriteEngine On 
RewriteBase /~Jason/hfh/ 
RewriteRule ^([A-Za-z0-9\-\_]*)$ index.php?admin=$1 

但是,当我去

localhost/~Jason/hfh/admin/collections 

我得到一个 “找不到网页” 的错误。谁能告诉我为什么?

(这是在this link相关的另一个问题。)

+0

这些是你在.htaccess中唯一的规则吗? – 2009-12-01 03:19:24

+0

是的,这就是整个.htaccess文件。我在/〜Jason/hfh /目录中也有一个空白的.htaccess文件。 – rhodesjason 2009-12-01 03:20:41

+0

在本地主机上使用mod-rewrite有问题吗? – rhodesjason 2009-12-01 03:23:02

回答

0

出现现在的短,直接的答案是:你不能使用你的mod_rewrite本地主机。

0

它看起来像将被发送到你的页面/~Jason/hfh/index.php?admin=collections,当你想/〜贾森/hfh/admin/index.php?admin=collections。

尝试改变规则:

RewriteRule ^([A-Za-z0-9\-\_]*)$ admin/index.php?admin=$1 
+0

问题是,它不是任何地方重定向。浏览器告诉我/ Jason/hfh/admin/collections找不到。如果它告诉我/Jason/hfh/index.php?admin=collections找不到,那么这将是一个不同的问题,如果这是有道理的。 – rhodesjason 2009-12-01 03:11:00

1

如果您有/ HFH /管理.htaccess文件/使该基地开始说起。

RewriteBase /~Jason/hfh/admin/ 

然后你可以看到你的期望。此外,当文件/目录存在时,您可能会希望子句不重定向。

是否输入了预期的结果URL的工作?

/~Jason/hfh/admin/index.php?admin=Collections 

编辑:

所以如果你的一大堆改变发生:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /~Jason/hfh/admin/index.php?admin=$1 [L] 
+0

是的,预期的结果网址起作用。 – rhodesjason 2009-12-01 03:14:39

+0

使用RewriteBase /〜Jason/hfh/admin /(以及将规则切换回不包含“admin /”)仍然会在浏览器中出现相同的“页面未找到”错误。它甚至不试图做重定向。 – rhodesjason 2009-12-01 03:15:54

+0

Simeon - 我改为你建议的RewriteCond行 - 没有改变。同样的错误,即使切换到完全不同的浏览器来控制缓存。 SO FRUSTRATING – rhodesjason 2009-12-01 03:48:58