【问题标题】:User friendly URL's for profiles用户友好的个人资料 URL
【发布时间】:2013-11-06 05:19:43
【问题描述】:

我有以下链接:

www.website.com/profile.php?user=Test

我想把链接改成:

www.website.com/Test

用户名在/ 之后,没有任何多余的乱码。

我在我的 .htaccess 文件中设置了这个,但它不起作用。为什么?

Options +SymLinksIfOwnerMatch
RewriteEngine on

RewriteBase /website

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ profile.php?user=$1 [R,L,QSA]

谢谢。

【问题讨论】:

  • 您在 .htaccess 中重定向 www.website.com/profile/Test - 这不是您在问题中描述的内容。你想达到什么目的?

标签: php apache mod-rewrite url-rewriting


【解决方案1】:

试试这个

Options +SymLinksIfOwnerMatch
RewriteEngine on

RewriteBase /website

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ profile.php?user=$1 [L,QSA]

现在您可以从此 URL 访问页面。

www.website.com/Test

【讨论】:

  • 定义“不工作”。根本不重定向?重定向但不是你想要的地方?还在搞乱现有文件?
  • @JohannesH。它根本没有重定向。 URL 保持不变。
  • URL 总是保持不变,这是一个内部重写。如果您希望它是外部的,请将 R 添加到标志中。是否提供了正确的内容?
  • 您在访问此 URL :- www.website.com/Test ??
  • @Burrows 所以你需要把RewriteBase /改成RewriteBase /website并通过localhost/website/Test访问网站
【解决方案2】:

尝试添加以下内容:

Options +FollowSymLinks
RewriteEngine On
RewriteRule  Test$ /profile.php?user=Test [QSA,L]
RewriteRule ^/(.*)$ /profile.php?user=$1 [QSA,L]

【讨论】:

  • 用于将所需链接显示为 www.website.com/Test 页面 www.website.com/profile.php?user=Test
  • 它不应该只适用于“测试”,你知道 :D 并且下面的行应该实际工作,并且也匹配“测试”。所以真的不需要额外的规则。
猜你喜欢
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多