0

我对 mod_rewrite 工作不多,所以我很容易错过一些简单的东西。我想匹配和替换特定的 URL。我要重写的 URL 如下所示:

http://www.sample.com/hellohttp://www.sample.com/index.php?page=hello

我的 htaccess 目前有以下规则:

RewriteRule ^(hello)/?$ index.php?page=$1 [L]

但是,当我实施规则并通过尝试去测试它时,http://www.sample.com/hellohttp://www.sample.com/hello/总是得到我的 404 错误文档。呃,我觉得它应该很简单,而且我一定在那里遗漏了一些东西。任何帮助都会非常棒,非常感谢!

这是我的整个文件供参考:

Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sample\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png) [NC]
RewriteRule ^(.*)\.(gif|jpe?g|png)$ sample.com/hotlink.png[R,NC,L]

RewriteCond %{HTTP_HOST} ^www.sample\.com$ [NC]
RewriteRule ^(.*)$ http://sample.com/$1 [R=301,L]

RewriteRule ^(hello)/?$ index.php?page=$1 [L]

谢谢

4

2 回答 2

0

你的代码对我来说非常好。也许你失踪了

RewriteEngine On
RewriteRule ^(hello)/?$ page.php?page=$1 [L]

或者可能根本没有安装或加载 mod_rewrite。寻找

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

在你的主要 apache 配置文件 httpd.conf

于 2013-05-05T14:26:53.587 回答
0

这是那些时代之一...

我清除了 htaccess 文件,只使用了以下几行并对其进行了测试:

Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /
#
RewriteRule ^(hello)/?$ page.php?page=$1 [L]

我意识到查看它引用 page.php 而不是 index.php 的非自定义 404 页面!

Not Found

The requested URL /page.php was not found on this server.

结果是我所有的编辑都错误地在规则中输入了 page.php 而不是 index.php。我纠正了它并且规则有效。那些时候之一:)

谢谢大家!

于 2013-05-05T15:18:18.833 回答