【问题标题】:htaccess mod_rewrite on subdomain with subdirectories带有子目录的子域上的 htaccess mod_rewrite
【发布时间】:2012-10-26 11:03:37
【问题描述】:

我知道这个网站上有 TONS 的问题与此主题有关,还有 TONS 的关于 google 的教程。但是,我现在已经搜索了一段时间,但似乎找不到一个可以解释我的具体情况的。

我正在构建一个社交应用程序,其中整个应用程序都存储在网站的子域目录中,如下所示:subdomain.example.com/network/

我的 .htaccess 文件位于子域的根目录中,现在我已经从所有文件中删除了 .php,这在整个项目中都应有的工作。我有一个 user.php 页面,每个用户的个人资料都基于该页面,每个用户的唯一标识符是他们的用户名(不像大多数人使用的“id”。)所以现在 url 看起来像 /network/user。 php?username=TylerB 这不是很漂亮。我尝试了许多不同的方法来使它看起来像 /network/user/TylerB 但我尝试的任何方法似乎都不起作用。我不知道是因为它在目录,子域还是什么中。截至目前,当我有 /network/user/TylerB(TylerB 是我的用户名)时,它会给我一个 404 错误。

这是我当前的 .htaccess 文件:

RewriteEngine On
RewriteRule ^user/([^/\.]+)/?$ user.php?username=$1 [L]
RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]

【问题讨论】:

    标签: php .htaccess url mod-rewrite


    【解决方案1】:

    我建议设置RewriteBase 指令并匹配完整模式,确保重写到/network/ 目录。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^network/user/([^/\.]+)/? /network/user.php?username=$1 [L]
    RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php [L]
    

    使用http://htaccess.madewithlove.be/ 的测试工具,我得到以下输出:

    This rule was met, the new url is http://example.com/network/user.php?username=name
    The tests are stopped because the L in your RewriteRule options
    

    【讨论】:

    • 你的css的路径是什么,真实的和重写的?
    • /network/theme/style.css 是真正的路径,我没有重写。
    • 这不会受到RewriteRule 指令的影响...我的猜测是HTML 中的引用是错误的,因为您正在从/network/user/name(2 个目录)更改为/network/user.php?username (1个目录)。是绝对的还是相对的?
    • 这是相对的。我应该将其调整为绝对值吗?
    • 我建议将其设为绝对值,否则您将在加载不同深度的 URL 时遇到问题。
    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多