我目前只有非常少的Apache体验,并且我的.htaccess文件遇到了困难。我的问题是:如何正确地重命名下面列出的这些文件?我相信我的语法是准确的,根据http://www.htaccesscheck.com,但是当访问这些页面时,A:页面由于重定向循环而无法加载,或者B:页面不会加载,但会重定向到错误的页面。这是我目前的.htaccess文件:
RewriteEngine On
RewriteBase /photos/
RewriteRule ^(.*)-(.*)$ archives.php?month=$1&year=$2 [L]
RewriteRule ^(.*)$ catpost.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]
非常感谢任何帮助。
答案 0 :(得分:1)
尝试以下代码:
RewriteEngine on
RewriteBase /photos/
RewriteRule ^([0-9]{1,2})-([0-9]{4})$ archives.php?month=$1&year=$2 [L]
RewriteRule ^([0-9]+)$ catpost.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]
此规则将检查:
您当前的.htaccess中有一些错误,因为您的第二条规则会获得第一条规则的结果。
顺便说一句,您可以使用http://htaccess.madewithlove.be/逐步检查发布到重写规则的内容。
答案 1 :(得分:0)
务必写出有效的模式
试试这个
RewriteEngine On
RewriteBase /photos/
RewriteRule ^(.*?)-(.*?)$ archives.php?month=$1&year=$2 [L]
RewriteRule ^(.*?)$ catpost.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*?)$ viewpost.php?id=$1 [QSA,L]