重写动态URL不起作用(htaccess)

时间:2013-01-08 18:50:43

标签: php .htaccess url-rewriting

我知道这是一个问题很多,我已经看过他们所有尝试了这么多不同的变化,但它不会工作,我不知道我做错了什么。 很久以前我创建了一个.htaccess文件,以便它指向我的404错误页面,这对我来说很好但是我想现在重写我网站上的网址,因为有很多帖子和它变得凌乱包含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  

这是在托管设置页面上写的内容。我不知道能够重写网址需要什么,但因为.htaccess文件目前正在为我的404页面工作,假设其设置正常吗?

1 个答案:

答案 0 :(得分:1)

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

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

NC忽略这种情况,QSA将任何额外的查询字符串参数附加到目标网址,L告诉Apache停止处理更多RewriteRule条目(如果匹配的话)当前的网址。