如何使用.htaccess重命名网址的一部分?

时间:2015-10-17 22:48:33

标签: php apache .htaccess

我目前只有非常少的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]

非常感谢任何帮助。

2 个答案:

答案 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]

此规则将检查:

  • 请求如yourdomain / 11-1111,然后返回archives.php
  • 请求像yourdomain / 111,然后返回catpost.php(你可以输入 任何数字)
  • else将返回viewpost

您当前的.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]