我对mod_rewrite的工作量不大,所以我很容易就会错过一些简单的东西。我想匹配并替换特定的URL。我想重写的URL如下所示:
http://www.sample.com/hello
至http://www.sample.com/index.php?page=hello
我的htaccess目前有以下规则:
RewriteRule ^(hello)/?$ index.php?page=$1 [L]
但是,当我实施规则并尝试转到http://www.sample.com/hello
或http://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]
由于
答案 0 :(得分:0)
您的代码对我来说非常好。也许你错过了
RewriteEngine On
RewriteRule ^(hello)/?$ page.php?page=$1 [L]
或者根本没有安装或加载mod_rewrite。 寻找
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
在主apache配置文件httpd.conf
中答案 1 :(得分:0)
这是其中一次......
我清除了htaccess文件,只使用了以下几行并对其进行了测试:
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /
#
RewriteRule ^(hello)/?$ page.php?page=$1 [L]
我意识到它在非自定义404页面上引用了page.php而不是index.php!
Not Found
The requested URL /page.php was not found on this server.
结果我的所有编辑都错误地在规则中输入了page.php而不是index.php。我纠正了它,规则有效。其中一次:)
全部谢谢!