0

我希望我的用户为他们将通过我的 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。我该怎么做?

编辑:我回答了这个问题,因为我发现了一些有用 的东西- 但是,我并不完全理解我的答案中发生的所有事情,如果有人可以准确地分解正在发生的事情 - 甚至只是验证我正在以正确的方式做这件事- 我会很感激。

4

1 回答 1

0

After quite a bit of searching - I found my answer, and yes - it was as easy as I assumed it would be (when you dig/Google hard enough).

I needed to use RewriteCond to check for a query string. I still don't fully understand everything happening here, but this did deliver the desired result.

Code

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