【问题标题】:Mod_rewrite headachemod_rewrite 头疼
【发布时间】:2011-10-10 12:35:42
【问题描述】:

好的,我只是想为网站设置一个简单的重写规则。 首先,在 httpd.conf 我有

LoadModule rewrite_module modules/mod_rewrite.so

然后在一个单独的文件中我有这个别名设置

Alias /vworker/ "f:/vWorker/" 

<Directory "f:/vWorker/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all
</Directory>

好了,现在网站的目录是

f:/vWorker/urlmask

在那里我有一个 .htaccess 文件,上面写着这个

RewriteEngine on
RewriteRule ^redirect/([0-9]+)/?$ index.php?redirect=$1 [L]

现在,我想要的是,如果我访问网址 http://localhost/vworker/urlmask/redirect/3161513,它实际上会调用 http://localhost/vworker/urlmask/index.php?redirect?3161513

从我的角度来看,一切似乎都设置正确,如果我在 .htaccess 文件中放入乱码,我会收到服务器错误,所以我知道它正在读取它。

我最终得到的是一个页面,上面写着“未找到。在此服务器上找不到请求的 URL /vworker/urlmask/redirect/94173336828903446。” 任何想法我做错了什么?

【问题讨论】:

  • 省略“^”是否有效?

标签: apache .htaccess rewrite


【解决方案1】:

一般来说,只要有Alias,就需要RewriteBase 才能使事情按预期工作。

在你的情况下,你应该有

RewriteBase /vworker/urlmask/

在与您的规则相同的 .htaccess 中。

【讨论】:

  • 如果 URL 是 localhost/vworker/urlmask/... 并且 .htaccess 在 urlmask 文件夹中,这应该是正确的RewriteBase。您可以添加 RewriteLogLevel 2 之类的内容来获取重写过程的一些日志记录(数字越大提供更多信息)。
  • 原来我有一个名为redirect.sql的文件,所以当我重命名它时它起作用了。
  • 但是现在我遇到了资源无法使用的问题,例如图像、css 等。它实际上必须在重定向文件夹中查找它们,知道如何解决吗?
  • 这取决于资源在哪里,它们的 URL 是什么样子(或应该是什么样子)......可能是一个不同的问题。
  • 想通了。不过还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
相关资源
最近更新 更多