.htaccess 使用htaccess获取id和页面名称

.htaccess 使用htaccess获取id和页面名称,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我目前有一个htaccess文件,我在其中重写 domain.com/index.php?page=home to 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

我目前有一个htaccess文件,我在其中重写 domain.com/index.php?page=home to 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]
我试图做的是从url获取&id=,因此index.php?page=home&id=5将被重写为/home/5


我遇到的另一个问题是,我无法打开其他目录中的文件,例如图像目录。当我打开images目录时,我得到了我为该站点设置的404页面,因为它不是一个页面,并且它试图将images/imagefile.jpg作为一个页面来读取。

只需在第一个条件之前添加以下内容:

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
文件干扰-尽管我怀疑您的情况是否如此

可能是您正在引用与当前请求相关的图像。因此,例如,如果您有
,并且当前页面是
/services/something
,它将尝试请求
/services/images/something
,这不是您想要的


要解决此问题,请在
img
标记(
)中添加一个尾随斜杠,或相应地设置
基本标记(
)。

谢谢您的回复。我在第一个条件之前添加了这个,但是同样的事情发生了。当我进入domain.com/home/5时,我会被发送到404错误页面。但是,domain.com/home&id=5的工作方式与我所希望的一样。