【问题标题】:Internal Server Error - Multiple depth URL string内部服务器错误 - 多深度 URL 字符串
【发布时间】:2012-09-11 16:14:20
【问题描述】:

我目前正在为我的网站使用这个 .htaccess 文件,

RewriteEngine On
RewriteRule ^u/([^/]+)/[^/]+)/[^/]+)/?$ /index.php?username=$1&content=$2&type=$3 [L,QSA]
RewriteRule ^u/([^/]+)/[^/]+)/?$ /index.php?username=$1&content=$2 [L,QSA]
RewriteRule ^u/([^/]+)/?$ /index.php?username=$1 [L,QSA]

但我得到了错误

服务器遇到内部错误或配置错误,无法完成您的请求。

我想要实现的是转这个网址

http://www.site.com/users/index.php?username=$1&content=$2&type=$3

进入

http://www.site.com/users/username/followers/newest

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您缺少一些左括号:

    RewriteRule ^u/([^/]+)/[^/]+)/[^/]+)/?$ /index.php?username=$1&content=$2&type=$3 [L,QSA]
    RewriteRule ^u/([^/]+)/[^/]+)/?$ /index.php?username=$1&content=$2 [L,QSA]
    RewriteRule ^u/([^/]+)/?$ /index.php?username=$1 [L,QSA]
    

    需要:

    # missing "(" here ----v and --v
    RewriteRule ^u/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?username=$1&content=$2&type=$3 [L,QSA]
    RewriteRule ^u/([^/]+)/([^/]+)/?$ /index.php?username=$1&content=$2 [L,QSA]
    RewriteRule ^u/([^/]+)/?$ /index.php?username=$1 [L,QSA]
    

    另外,如果您希望您的网址看起来像 http://www.site.com/users/username/followers/newest,请将开头的 ^u/ 更改为 ^users/

    【讨论】:

    • 哈哈,原来为我写这篇文章的人,你真是太奇怪了。我打算把它放在 users/ 文件夹中,我在开始时放什么?
    • @user1527354 你是对的,不知道他们是如何在我的其他答案(我已经编辑)中丢失的。如果你想把它放在/users/ 目录中,请确保从正则表达式中删除^u/,从目标中删除前导/,并在规则上方添加RewriteBase /users/
    • 非常感谢。但是当我在我的网站上使用 .htaccess 时,所有的 .css 都会搞砸。你以前有过这样的经历吗?
    • 所有链接的相对 URI 基础已从 /(通过 /index.php)更改为 /u/something/something/something,因此您需要将 <base href="/"> 添加到页面标题中。或者让你的 css/js/image/etc 链接绝对。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多