Php Htaccess重写问题

Php Htaccess重写问题,php,apache,.htaccess,Php,Apache,.htaccess,我尝试在我的网站上使用seo友好的url,我的目标是将product/131/ABCDEFGH重写为productpage.php?id=131 我现在实现了这一点,它重写了路径并打开了正确的页面 .htaccess代码 RewriteEngine on RewriteBase / RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L] 现在我有另一个问题,这是有关内部链接,目前所有的图片等在这个页面上

我尝试在我的网站上使用seo友好的url,我的目标是将
product/131/ABCDEFGH
重写为
productpage.php?id=131

我现在实现了这一点,它重写了路径并打开了正确的页面

.htaccess代码

RewriteEngine on
RewriteBase /
RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L]
现在我有另一个问题,这是有关内部链接,目前所有的图片等在这个页面上绑定的相对路径

这行不通,因为他们都在不同的路径上搜索


我用另一种方法打开或更改htaccess文件

您需要允许apache从实际位置为现有文件提供服务:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^product/(([^/]*))/([^/]*)$ /cprrpc/productpage.php?id=$1 [L]

这意味着如果请求图像,apache将忽略重写。

您的URL在重写的URL结构上会发生倾斜,因为现在还有两个目录级别。不要使用指向当前目录的相对URL,而是为资源使用一个“前导斜杠”,或者可以使用PHP在所有资源前面打印应用程序的“根路径”

例如,不使用相对URL(到当前目录):

(扩展到localhost/cprpc/product/131/images/gplus.png)

您可以使用前导斜杠,使URL相对于web根:

(扩展为localhost/cprrpc/images/gplus.png)

也可以使用PHP打印web根目录:


/images/plus.png”/>
(扩展为localhost/cprpc/images/gplus.png)

但是当我添加这些条件时,我原来的重写也没有打开。可能是我错过了什么吗?我错过了!否定抱歉,您的代码没有丢失我的页面,但仍然没有打开图像加载失败资源:服务器响应状态为404(未找到)由于此页面图像与主url(cprprc/images/glus.png)相对,因为您使用的是相对图像路径,请尝试使用绝对路径:/image/here.jpg尽管如此,我喜欢您的想法,即使用绝对路径。但我已将/更改为u,如果我没有使用绝对路径,它将自动重定向到正确的路径,下次我将使用绝对路径I’我会记住你的建议,但是当我添加这些条件时,我的原始页面也没有打开。我可能错过了什么吗?这些条件只会修复位置/product/xxx/yyy…中存在的资源,但不会匹配任何其他内容。基本上,它不会影响你的重写,除非文件或目录已经存在在您的文件系统中。假设您正试图重写
product/131/ABCDEFGH
,但您也已经有了确切的文件结构(我对此表示怀疑),则现有文件/目录将正常执行..但如果删除条件,它将再次工作?很抱歉,您的代码没有丢失我的页面,但仍然没有打开图像无法加载资源:服务器响应状态为404(未找到)因为此页面图像与主url(cprpc/images/glus.pngAha)相对。您可以使用PHP在所有资源后面打印应用程序的“根路径”,而不是使用相对url。例如,您可以使用
(扩展到localhost/cprpc/product/131/images/gplus.png)而不是
/images/plus.png”/>
(扩展到localhost/cprpc/images/gplus.png)确定。。这是我们实现这一目标的唯一途径。我需要重写所有的内部链接。