1

现在,显示以下 URL:

www.mysite.com/account.php?username=$username

我想要的是:

www.mysite.com/$username

我在我的htaccess文件中使用以下代码:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ /account.php?username=$1 [L,QSA]

但它不起作用:URL 和以前一样。

怎么了 ?

4

1 回答 1

1

您的规则仅执行此操作:

如果有人请求www.mysite.com/$username,则在内部将资源提供给/account.php?username=$username.

就这样。语法是RewriteRule <the URI that matches this> <gets internally rewritten to this>

因此,您对更改 URL 无能为力。这不是 mod_rewrite 的工作方式。听起来您想要的是能够从外部重定向浏览器,以便位置栏中的内容发生变化。要做到这一点,它要复杂得多:

RewriteCond %{THE_REQUEST} \ /account\.php\?username=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R=301]
于 2013-10-01T23:10:20.863 回答