1

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

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

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

有什么想法我在这里出错了吗?当我尝试加载目录时,它目前给了我一个 404。

4

2 回答 2

2

我相信你的问题是你的第一个斜线。

这应该有效。

RewriteRule ^events/([^/\.]+)/?$ /events.php?eventdate=$1 [NC,L]
于 2013-04-26T19:22:24.900 回答
0

根据mod_rewrite 手册的RewriteRule Directive设置:

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

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

如果您希望匹配主机名、端口或查询字符串,请分别使用带有 %{HTTP_HOST}、%{SERVER_PORT} 或 %{QUERY_STRING} 变量的 RewriteCond。

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

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

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

RewriteRule ^/events/([^/\.]+)/?$ /events.php?eventdate=$1
于 2013-04-26T21:16:50.840 回答