【问题标题】:Rewriting dynamic URLS not working (htaccess)重写动态 URL 不起作用 (htaccess)
【发布时间】:2013-01-08 18:50:42
【问题描述】:

我知道这是一个经常被问到的问题,我看到他们都尝试了这么多不同的变化,但它不起作用,我不知道我做错了什么。 我很久以前创建了一个 .htaccess 文件,以便它指向我的 404 错误页面,这对我来说很好,但我现在想重写我网站上的 url,因为有很多帖子而且它变得混乱与 url 中的所有变量。 我有一个名为 viewpost.php 的页面,它被传递了 1 个变量(还有其他页面,但这是示例) viewpost 被传递了 1 个变量,所以它变成 /viewpost.php?ID=10

RewriteEngine on
RewriteRule viewpost-ID-(.*)\.htm$ viewpost.php?ID=$1   

我将这两行添加到 htaccess 文件中。我尝试从文件中删除 404 代码并保存它,但它也没有使它工作。除了将此代码添加到 .htaccess 文件之外,我还需要做些什么吗? 该网站目前托管在 atspace 上

Hosting OS  Proprietary *nix
Perl version    5.8.4
MySQL version    5.1
Perl path   /usr/bin/perl
Sendmail path   /usr/local/bin/sendmail
CGI-BIN path    not required    (You can run CGI, Perl scripts from any domain/subdomain folder)
Perl Modules    2900+ installed modules    (Click here to view the full list)
PHP Version  5.2.17 Change
PHP.INI Edit
PHP Info    [View PHP5.2.17 Info] [View PHP5.3.6 Info]
Directory Protection     Enabled  

这是写在主机设置页面上的内容。我不确定能够重写 url 需要什么,但由于 .htaccess 文件目前正在为我的 404 页面工作,我假设它的设置正常?

【问题讨论】:

  • viewpost.php which gets passed 1 variable ¿在哪里,怎么做?显示至少包含变量的传入 URL 的示例。

标签: php .htaccess url-rewriting


【解决方案1】:

可能.htaccess 文件中的一些其他规则覆盖了您的规则,或者您可能遇到了区分大小写的问题。在RewriteRule 行的末尾添加[NC,QSA,L]

RewriteEngine On
RewriteRule viewpost-ID-(.*)\.htm /viewpost.php?ID=$1 [NC,QSA,L]

NC 忽略大小写,QSA 将任何额外的查询字符串参数附加到目标 URL,L 告诉 Apache 如果与当前 URL 匹配,则停止处理更多 RewriteRule 条目。

【讨论】:

  • 我试过了,但没有运气。文件中唯一的另一件事是 404 代码,我删除了上面那两行是我现在添加到文件中的所有内容
  • @user1889580 会不会是区分大小写的问题?
  • @user1889580 好的,我现在没有想法了。 viewpost.php 之前的 / 呢?整个请求 URL 是什么样的,应该重写哪个页面的 URL(带有路径)?
  • 在浏览器中是 domain.com/viewpost.php?ID=10
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 2015-02-03
  • 2014-08-08
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多