0

我知道这是一个经常被问到的问题,我看到他们都尝试了很多不同的变化,但它不起作用,我不知道我做错了什么。很久以前我创建了一个 .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 页面工作,我假设它的设置很好?

4

1 回答 1

1

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

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

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

于 2013-01-08T19:03:26.550 回答