Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
noob&x27;s mod rewrite和相对URL的问题_Url_Mod Rewrite_Seo - Fatal编程技术网

noob&x27;s mod rewrite和相对URL的问题

noob&x27;s mod rewrite和相对URL的问题,url,mod-rewrite,seo,Url,Mod Rewrite,Seo,我一定是做错了什么,因为无论我如何尝试或用谷歌搜索,我都找不到答案:( 所以,我想要一个像 要实际加载这样一个完美工作的url: 我可以在.htaccess文件中编写重写规则,并且可以读取lid变量。问题是list.php中的所有路径都是相对的.Css、images、javascript e.t.c。因此,当SEO友好url加载时,所有这些项目都会在BLUEPRINT/list/857/…中查看 例如:在请求seo友好url时实际上是这样的: 那我该怎么办 我可能会尝试将页面中的所有路径转换为根

我一定是做错了什么,因为无论我如何尝试或用谷歌搜索,我都找不到答案:(

所以,我想要一个像 要实际加载这样一个完美工作的url:

我可以在.htaccess文件中编写重写规则,并且可以读取lid变量。问题是list.php中的所有路径都是相对的.Css、images、javascript e.t.c。因此,当SEO友好url加载时,所有这些项目都会在BLUEPRINT/list/857/…中查看

例如:
在请求seo友好url时实际上是这样的:

那我该怎么办

我可能会尝试将页面中的所有路径转换为根相对路径(例如“/BLUEPRINT/images/logo.png”)而不是相对路径。但是页面中有几十个路径,即使我这样做,它们也不会在实际服务器上工作,因为应该是“/images”而不是“/BLUEPRINT/images”.所以我不能把我的文件上传到实际的服务器上


我有什么选择?所有这些精彩的脚本,比如wordpress、joomla、e.t.c.是如何处理这个问题的?我到底做错了什么?这让我发疯了!

你试过应用“重写库”规则吗


您可以编写一个条件,允许对CSS、JS和其他路径的请求通过并忽略list.php的重写规则。下面是一个示例

# Turn on URL rewriting
RewriteEngine On

# If your URL is www.example.com/, use /
RewriteBase /

# Find CSS and JS paths
RewriteCond $1 ^(BLUEPRINT/css|BLUEPRINT/js)

# No rewriting
RewriteRule ^(.*)$ - [PT,L]
以下是Apache提供的一个很棒的教程,其中包含大量示例:

祝你好运

编辑:Apache的另一个好链接是mod_rewrite docs。对“passthrough”进行文本搜索

需要注意的重写规则的另一部分是破折号“-”,它表示“不应执行替换”


最后,我在示例中添加了RewriteEngine和RewriteBase规则。这将使其更加完整。

您的新URL没有相同的基本路径前缀。这意味着相对URL路径的解析方式不同。引用
images/logo.png
现在解析为
/BLUEPRINT/list/images/logo.png
,而不是to
/BLUEPRINT/images/logo.png

要解决此问题,请在引用中使用绝对URL路径,如:

<img src="/BLUEPRINT/images/logo.png" />

现在,相对URL路径是从此基URL而不是当前URL解析的。但请注意,更改基URL会影响所有相对URL。

我正在尝试
RewriteBase/BLUEPRINT/
RewriteBase/BLUEPRINT
,但似乎没有任何效果?我知道我已使用RewriteBase解决了类似的问题。我将尝试找出并返回给你。基本标签(不知道)对我来说这似乎是一个很好的解决方案!我会尝试一下并让你知道。谢谢。很抱歉花了这么长时间尝试,但这正是我想要的!非常感谢。
base
标记有问题。@DaveJarvis:IE8在
base
@Gumbo方面有一些问题:理论上,这个错误是固定的;实际上,公众有很多错误的浏览器。
<base href="/BLUEPRINT/" />