这有效:
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,但它无法在我的网络主机上运行。在我联系他们之前可能出现什么问题?
答案 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并执行您需要的操作。这不是您的问题的更正,但它将是避免您的工作的另一种方式。