我希望我的用户为他们将通过我的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.我该怎么做?
修改 我回答了这个问题,因为我找到了工作的东西 - 然而,我并不完全理解我的答案中发生的一切,如果有人能够准确分解正在发生的事情 - 或者甚至只是验证我是这样做正确的方式 - 我将不胜感激。
答案 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