在我的网站上我想更改网址(只是例子):
site.com/showCategory.php?catId=34
为:
site.com/category/34/
以下是我的.htaccess文件的内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^affichage/([0-9]+)$ /affichage/$1/ [R]
RewriteRule ^affichage/([0-9]+)/$ /affichage.php?n=$1
</IfModule>
它有效,但问题是affichage.php
中的所有网址(href标记)都有“/ affichage / 29 /”,而css文件的来源变为http://www.site.com/category/34/css/style.css
。
答案 0 :(得分:3)
我添加此项以排除我想要直接访问的css和其他文件:
RewriteCond %{REQUEST_FILENAME} !\.(php|ico|png|jpg|gif|css|js|gz|html?)(\W.*)?
或者,按目录名排除:
RewriteCond %{REQUEST_FILENAME} !^/(css|js|static|images)(/.*)
答案 1 :(得分:0)
您必须再次输出该网址。然而,好的做法是用函数包装它。
e.g:
<a href="<?php rewritefunc('affichage.php',array('n'=>29)); ?>">This URL</a>
<?php
$do_rewrite = true;
function rewritefunc($file,$params){
$ret = '';
switch(strtolower($file)){
case 'affichage.php':
if($do_rewrite){
$ret = 'affichage/'.$params['n'].'/';
}else{
$ret = 'affichage.php?'.http_build_query($params);
}
}
return $ret;
}
?>
使用switch语句可以添加更多url解析。此外,使用此包装函数,您可以轻松地在旧URL和新URL之间切换。
答案 2 :(得分:0)
这是一个解决网址问题。在引用外部资源时,您需要使用绝对URL(或至少是绝对URL路径)。使用绝对网址路径/css/…
代替相对css/…
或./css/…
。
或者您使用BASE
HTML element更改了相对URL的基本网址。但请注意,这会影响所有相对网址。
另请参阅Problem using URL rewrite (Relative Paths not working)和mod_rewrite URL info required。