我目前在我的 htaccess 中有这一行:
RewriteRule ^/events/([^/\.]+)/?$/ /events.php?eventdate=$1 [NC,L]
我有一个 php 页面 events.php,它被拉出动态日期并生成内容。例如,当人们去 /events/04-26-2013/ 时,我希望它从 events.php?eventdate=04-26-2013
有什么想法我在这里出错了吗?当我尝试加载目录时,它目前给了我一个 404。
我目前在我的 htaccess 中有这一行:
RewriteRule ^/events/([^/\.]+)/?$/ /events.php?eventdate=$1 [NC,L]
我有一个 php 页面 events.php,它被拉出动态日期并生成内容。例如,当人们去 /events/04-26-2013/ 时,我希望它从 events.php?eventdate=04-26-2013
有什么想法我在这里出错了吗?当我尝试加载目录时,它目前给了我一个 404。
我相信你的问题是你的第一个斜线。
这应该有效。
RewriteRule ^events/([^/\.]+)/?$ /events.php?eventdate=$1 [NC,L]
根据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