【问题标题】:What is wrong with this .htaccess code?这个 .htaccess 代码有什么问题?
【发布时间】:2012-11-04 02:41:30
【问题描述】:

我需要将我网站中的文章和个人资料链接更改为动态链接。即

  • 文章site.com/article.php?id=12 变为 site.com/article/this_is_title_of_article
  • 个人资料site.com/ref.php?user=23 变为 site.com/john_doe

所以我写了这个给.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ ref.php?user=$1 [QSA,L]
RewriteRule ^articles/(.*)$ article.php?user=$1 [QSA,L]

因此,它适用于配置文件。你可以输入site.com/username,它可以工作。但是,对于文章,它没有 - 它只是不显示任何内容。

我不明白为什么如果用户名超过一个单词,它不会在单词之间添加下划线:即使我添加到像site.com/john_doe 这样的 URL 也不起作用。

所以,上面的代码几乎只适用于用户名并且如果该用户名只有一个单词。

【问题讨论】:

  • 您是否将文件命名为.htacess?如果是,则将其重命名为.htaccess
  • 抱歉,打错了。名字很好。毕竟,代码正在部分使用配置文件重写
  • 嗨,丹尼,我希望我知道那是什么意思。我已经粘贴了上面 .htaccess 中的所有内容,并且我在本地主机中使用 XAMPP。我不知道 rewritebase 虽然

标签: apache .htaccess url-rewriting


【解决方案1】:

规则是从上到下评估的,因此您的用户规则很可能在您的文章规则有机会之前就捕捉到了所有内容。

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^articles/(.*)$ article.php?user=$1 [QSA,L]
RewriteRule ^(.*)$ ref.php?user=$1 [QSA,L]

【讨论】:

  • 我试过了,网站不知何故被污损了。一半的 CSS 不起作用,对于没有出现的文章也是如此。
  • 这可能是因为您的 CSS 链接正在引用当前文件夹(现在是 articles/)。将它们从 href="filename" 更改为 href="/filename",以便它们相对于您网站域的根目录。
  • 我努力说明问题并上传了这张图片 (imm.io/KnMe) 请检查它并告诉我你的想法。我自己制作了这个网站,所以这可能是问题
  • 说真的,您应该考虑尝试像Codeigniter 这样的基本 php 框架,而不是像那样将 sql 放入您的 html 中。不过从你的截图我不知道你在问我什么。
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 2012-08-07
  • 2014-08-29
  • 2013-06-05
  • 2014-06-04
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多