没有参数时如何忽略URL重写?

时间:2013-07-08 04:14:42

标签: .htaccess mod-rewrite

我希望我的用户为他们将通过我的CMS添加的一些内容指定友好的URL。然而,.htaccess并不是我的强项(我通常会像瘟疫一样避免它)。

到目前为止,我所拥有的几乎完美地工作:

RewriteEngine on
RewriteRule    ^arg/([0-9a-z\-]+)/?$    index.php?arg=$1    [NC,L]

显然 - 我可能不会使用“/arg”在生产中指定它,但是对于所有意图和目的,它现在都适用。

这可能不言而喻 - 但所有通常看起来像的请求: index.php?arg=some-argument看起来不像/arg/some-argument,这正是我想要的。

以下是问题

现在 - 如果用户在index.php结束而没有传递参数 - 那就是404s。我想向最终用户提供一个特定于页面的选项列表 - 而不是将它们发送到通用404.我该怎么做?

修改 我回答了这个问题,因为我找到了工作的东西 - 然而,我并不完全理解我的答案中发生的一切,如果有人能够准确分解正在发生的事情 - 或者甚至只是验证我是这样做正确的方式 - 我将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过相当多的搜索 - 我找到了答案,是的 - 这就像我想象的那样容易(当你挖掘/ Google足够努力时)。

我需要使用RewriteCond来检查查询字符串。我仍然不完全理解这里发生的一切,但这确实带来了预期的结果。

<强>代码

RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET /.*;.* HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule    ^arg/([0-9a-z\-]+)/?$    index.php?arg=$1    [NC,L]    # Handle product requests