【问题标题】:how to use mod rewrite如何使用mod重写
【发布时间】:2009-05-22 19:41:15
【问题描述】:

我已将我的网站从旧服务器转移到共享服务器。

我所有的代码都在共享服务器上"public_html" 下的"lfdata/main/com" 中。

干净的 URL 如下所示:

http://ip-address/~name/how

重写后的 URL 应该是:

http://ip-address/~name/lfdata/main/com/how.php

那么任何人都可以建议创建上述 URL 的重写规则吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    试试这个规则:

    RewriteCond %{REQUEST_URI} !^/~[^/]+/lfdata/main/com/
    RewriteRule ^(~[^/]+)/(.+) $1/lfdata/main/com/$2.php [L]
    

    这将在内部将/~name/foobar 的任何请求重写为/~name /lfdata/main/com/foobar.php.

    【讨论】:

    • 如果不修改查询,则不需要QSA。
    • 我已经在上面尝试过,但它不起作用?我可以在这里粘贴我的 .htaccess 文件吗?
    • 命令允许,拒绝 选项 -Indexes 选项 +FollowSymLinks DirectoryIndex index.php RewriteEngine on RewriteCond %{REQUEST_URI} !^/~[^/ ]+/lf/main/com/ RewriteRule ^(~[^/]+)/(.+) $1/lf/main/com/$2.php [L]
    • 缺少</IfModule>。但是你为什么还要使用那些空的<IfModule> 块呢?为什么你的 mod_rewrite 依赖于 mod_expires?
    • 实际上文件太大所以我删除了一些内容。有什么方法可以将这个文件发送给你?所以我会描述我的问题。我们可以在线解决吗?如果你不介意的话。
    【解决方案2】:

    这将执行您的重写,包括查询字符串参数

    RewriteRule ^~name/how(.*)$ ~name/lfdata/main/com/how.php$1
    

    【讨论】:

    • 查询无法与 RewriteRule 指令匹配。这只能通过 RewriteCond 指令实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多