好的,这有点奇怪,我的 htaccess 规则似乎并非每次都有效。有时它会将人们发送到 404 页面。但是,如果他们再次尝试相同的链接,它就会起作用。
这是我的规则:
RewriteRule ^articles/(.+?)\.([0-9]+)/?$ /index.php?module=articles_full&aid=$2&title=$1 [N,NC,QSA]
RewriteRule ^articles/(.+?)\.([0-9]+)/page\=([0-9]+)?$ /index.php?module=articles_full&aid=$2&title=$1&page=$3 [N,NC,QSA]
任何人都可以看出这些规则有什么问题吗?它基本上将 index.php?module=articles_full&aid=123&title=title 变成 /articles/title.123
我也有这个将旧链接重定向到新链接,不知道是否有人知道它们有时是否会发生冲突?
RewriteCond %{QUERY_STRING} threads/(.*)\.([0-9]+)/*
RewriteRule index.php /articles/%1\.%2?from=oldSite [R=301,L]
指向我的完整 htaccess 的链接:http: //pastebin.com/G0AxxiHb
浏览今天(30 日)的错误日志,这些都跳出来了:
[Wed Jan 30 09:44:30 2013] [error] [client 2.229.9.52] File does not exist: /home/gamingon/public_html/articles, referer: http://plus.url.google.com/url?sa=z&n=1359539066078&url=http%3A%2F%2Fwww.gamingonlinux.com%2Farticles%2Frolling-survival-a-new-alpha-funded-game-on-desura.1681&usg=V4xV32LxoWJ1cPOvrD_XZgftgN8.
那个看起来像我在 G+ 上发布的链接,我猜是因为它在 URL 的末尾添加了“&usg=V4xV32LxoWJ1cPOvrD_XZgftgN8”?
[Wed Jan 30 11:34:43 2013] [error] [client 100.43.83.149] File does not exist: /home/gamingon/public_html/$10,000 to finish on Kickstarter
这似乎错过了“/articles/”、id 和名称中的空格?不确定这是怎么发生的,也许有人手动输入了它?
似乎也是其中的一些:
[Wed Jan 30 06:32:38 2013] [error] [client 94.246.88.189] File does not exist: /home/gamingon/public_html/articles
你认为也许我需要在两个 /articles/ 规则中添加一些东西来检查将东西添加到末尾的链接吗?喜欢来自 twitter、g+ 等的链接?