.htaccess:URL重写分页

时间:2012-01-03 19:27:41

标签: php .htaccess rewrite

这有效:

RewriteRule ^newest/?$ index.php?type=newest

这不起作用:

RewriteRule ^newest/(\d+)*/?$ ./index.php?type=newest&p=$1

我重写的其余部分:

IndexIgnore *
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f

这适用于运行xampp的localhost,但它无法在我的网络主机上运行。在我联系他们之前可能出现什么问题?

2 个答案:

答案 0 :(得分:1)

要检查的几件事......

您可能需要通过取消注释以下内容在apache配置文件(httpd.conf)中启用htaccess:

;LoadModule rewrite_module modules/mod_rewrite.so

尝试确保服务器的httpd.conf中的目录条目不包含

AllowOverride None

因为这会阻止.htaccess文件在单个目录中使用。它应该看起来像这样(注意 AllowOverride All ):

<Directory /var/www/www.mysite.com>
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

同样在httpd.conf中,确保.htaccess实际上是apache对访问文件的期望。 AccessFileName指令可以指定此值。例如:

<virtualhost>
    ServerName www.mysite.com
    DirectoryRoot /var/www/www.mysite.com
    AccessFileName .customhtaccess
</virtualhost>

如果AccessFileName指令设置为不同,则不会解析.htaccess文件。

答案 1 :(得分:0)

为什么不使用更有效的方法来执行此操作。我建议使用这种模式:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

要将所有请求重定向到索引文件,您就可以解析URL并执行您需要的操作。这不是您的问题的更正,但它将是避免您的工作的另一种方式。