【问题标题】:Generating dynamic pretty urls via .htaccess file通过 .htaccess 文件生成动态漂亮的 url
【发布时间】:2012-05-28 09:52:34
【问题描述】:

我正在尝试通过 .htaccess 生成动态“漂亮 URL”,以便 http://mysite.com/episode.php?episode=1 将变为 http://mysite.com/1,但显然我希望这适用于潜在范围 1 - 999 之间的所有剧集编号。我有以下内容,但是当我加载 .htaccess 文件时出现 503 错误:

Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^mysite\.com$
RewriteRule ^(.*) http://mysite.com/$1 [R=301,L]

RewriteRule ^/episode/\(\?:0|\[1-9\]\\d{0,2}\)$ //episode.php?episode=(?:0|[1-9]\d{0,2}) [L]

我似乎无法弄清楚我哪里出错了,也没有真正理解为什么会抛出 503。

【问题讨论】:

    标签: regex .htaccess friendly-url


    【解决方案1】:
    RewriteRule ^episode/(0|[1-9]\d{0,2})$ /episode.php?episode=$1 [L,QSA]
    

    更多关于QSA的信息:apache.org/docs/current/rewrite/flags.html#flag_qsa

    【讨论】:

    • 感谢您的回复。我是不是弄错了?我希望http://mysite.com/episode.php?episode=1 变成http://mysite.com/1,而不是相反。当我按照您上面的格式加载时,就像我之前所做的那样,它看起来正试图反过来改变。我错过了什么吗?
    • 你从错误的方向看它。当用户导航到http://mysite.com/1 时,服务器将改为为她提供http://mysite.com/episode.php?episode=1。用户看到的 URL 仍然是 http://mysite.com/1
    • 好的,现在我明白了。不过,这似乎还没有发生。如果用户导航到 http://mysite.com/1 我会收到 404 错误。
    • 是的,我已经想到了,我得到了同样的 404。老实说,我完全感到困惑!
    • 似乎 RewriteRule 不喜欢前导斜线。我删除了它。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2023-02-26
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多