htaccess重写给404?

时间:2013-04-26 19:16:42

标签: php apache .htaccess mod-rewrite

我目前在我的htaccess中有这一行:

RewriteRule ^/events/([^/\.]+)/?$/ /events.php?eventdate=$1 [NC,L]

我有一个php页面events.php,它是拉动态日期并生成内容。当人们去/ events / 04-26-2013 /例如我希望它来自events.php?eventdate = 04-26-2013

我在这里出错的任何想法?当我尝试加载目录时,它当前给了我404.

2 个答案:

答案 0 :(得分:2)

我相信你的问题在于你的第一次斜线。

这应该有用。

RewriteRule ^events/([^/\.]+)/?$ /events.php?eventdate=$1 [NC,L]

答案 1 :(得分:0)

根据RewriteRule Directivemod_rewrite manual部分:

  

在VirtualHost上下文中,最初将匹配模式   主机名和端口之后以及查询之前的URL部分   字符串(例如“/app1/index.html”)。

     

在Directory和htaccess上下文中,Pattern最初会是   删除前缀后,与文件系统路径匹配   将服务器引导到当前的RewriteRule   (例如“app1 / index.html”或“index.html”取决于哪里   指令已定义。)

     

如果你想与之匹敌   主机名,端口或查询字符串,使用RewriteCond   %{HTTP_HOST},%{SERVER_PORT}或%{QUERY_STRING}个变量   分别

除非有充分的理由从/ EVENTS /,/ Events /,& / events /您不需要[NC] No Case声明。因此,对于.htaccess,规则如下所示:

RewriteRule ^events/([^/\.]+)/?$ events.php?eventdate=$1 [L]

VirtualHost上下文中,它看起来像这样:

RewriteRule ^/events/([^/\.]+)/?$ /events.php?eventdate=$1