我想重写这样的网址:
http://domain.com/category.php?id=xx
为:
http://domain.com/category/?id=xx
另外,我想隐藏index.php。我怎样才能用.htaccess实现这个目标?以下代码不起作用:
##REDIRECTS-START
##REDIRECTS-END
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(ADMIN.*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
### ROOT DIR TO PROJECT
RewriteRule . wallkill/index.php [L]
感谢。
答案 0 :(得分:1)
试试此代码
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
参考link
答案 1 :(得分:0)
您需要2套规则。第一组将浏览器重定向到最后没有.php
的请求,然后在内部重写.php
返回。第二条规则将浏览器重定向到没有index.php
的请求。
类似于:
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+(.*)index\.php
RewriteRule ^ /%1 [L,R]
RewriteCond %{THE_REQUEST} \ /+([^\?]+)\.php
RewriteRule ^ /%1/ [L,R]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]
请注意,当您将/
个结尾斜杠添加到结尾时,您的相对网址会更改,并且所有相关链接都会中断。要解决此问题,请确保所有链接都是绝对的(以/
或http://
开头)或在所有网页的标题中添加相对基数:
<base href="/" />