我目前有一个htaccess文件,我重写 domain.com/index.php?page=home 至 domain.com/home
我的整个htaccess看起来像这样:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]
我尝试做的也是从网址获取& id =所以 index.php?page = home& id = 5 将被重写为 /家/ 5
我遇到的另一个问题是我无法打开其他目录中的文件,例如images目录。当我打开图像目录时,我得到了我为该网站设置的404页面,因为它不是一个页面,而是试图将 images / imagefile.jpg 作为页面阅读。
答案 0 :(得分:0)
只需在第一个条件之前添加:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+)&id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]
关于以页面形式打开的图片,情况应该不是这样 - 您的.htaccess
条件会阻止这种情况发生。您需要确保您请求的文件存在于images目录中 - 如果不存在,请求将转发到index.php
。还要确保没有其他.htaccess
文件干扰 - 尽管我怀疑你是这样的。
可能是您正在引用与当前请求相关的图像。因此,例如,如果您有<img src="images/something.png>
且当前页面为/services/something
,则会尝试请求/services/images/something
,这不是您想要的。
要解决此问题,请在img
代码(<img src="/images/something.png>
)中添加尾部斜杠,或相应地设置base
代码(<base href="/">
)。