【问题标题】:htaccess rewrite for subdomain onlyhtaccess 仅重写子域
【发布时间】:2013-02-10 13:09:19
【问题描述】:

我正在尝试将一些参数重写为漂亮的链接,但仅适用于子域/文件夹。不幸的是,我无法让它工作,也可能是因为之前还有一些其他的重写......

这是我的代码:

<IfModule mod_rewrite.c>
# NON-WWW TO WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

# WORDPRESS-BLOG
Options +FollowSymlinks
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# REDIRECT FOR SUBDOMAIN
RewriteCond %{HTTP_HOST} ^subdomain.example.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)(?:/)?$ index.php?cshort=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)(?:/)?$ /index.php?cshort=$1&cid=$2 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)(?:/.*)?$ /index.php?cshort=$1&cid=$2&step=$3 [L]
</IfModule>

基本上只有最后一部分是我想重写的部分,以更改类似

的 URL

http://subdomain.example.com/index.php?cshort=abc&amp;cid=123&amp;step=1http://subdomain.example.com/abc/123/1

www.example.com 的其他重写规则不应该受到影响。不幸的是,我当前的代码只为博客和 www 做了前两个规则,但子域没有任何反应。我的代码有什么问题?

【问题讨论】:

    标签: .htaccess rewrite


    【解决方案1】:

    当您说要从 http://subdomain.example.com/index.php?cshort=abc&amp;cid=123&amp;step=1 重写为 http://subdomain.example.com/abc/123/1 时,您的意思是您希望用户输入漂亮的 URL 并让它在后台提供完整的 URL,而不是您想要从丑到漂亮的网址,对吧?

    在你的 RewriteRules 中,你想用“(?:/)?”来完成什么?正如所写,这对我没有任何意义。如果你只是想匹配目录路径是否以斜杠结尾,你可以这样做:

    RewriteRule ^([^/.]+)/?$ index.php?cshort=$1 [L]
    

    编辑:其他建议:

    1. 将“重定向子域”部分移至“Wordpress 博客”部分上方。由于 Wordpress 规则适用于“所有不是真实文件或目录的内容,无论域如何”,因此应该放在最后。

    2. RewriteConds 仅适用于其后的单个 RewriteRule。对于您在“重定向子域”下列出的三个规则中的每一个,在按照上述建议更新它们之后,您需要重复 RewriteRule 前面的两个 RewriteCond 行。

    【讨论】:

    • 是的,我当然希望他们的用户输入漂亮的网址...对此有任何建议,因为即使您进行了更正,它也没有做任何事情:(
    • 添加了一些关于规则顺序和 RewriteConds 使用的建议。
    猜你喜欢
    • 2011-05-15
    • 2011-02-04
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多