繁体   English   中英

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

[英]How to rename part of a url with .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]

任何帮助深表感谢。

请尝试以下代码:

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(您可以输入任何数字)
  • 否则将返回viewpost

您当前的.htaccess文件有一些错误,因为第二条规则是第一条规则的结果。

顺便说一句,您可以使用http://htaccess.madewithlove.be/逐步检查重写规则中的内容。

一定要写一个有效的模式
尝试这个

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM