当我应用重写规则时,我遇到了.htaccess的问题。下面我解释一下我做了什么:
在localhost中:
路径: / dev / Site
所需的友情网址: www.site.com/l/p - > l 用于语言, p 用于页面
源网址为: www.site.com/index.php?p=about&l=en
在.htaccess中:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?p=$2&l=$1 [L]
情况是重写规则部分工作
1- www.site.com/en/about有效,但当位于例如 / dev / Site / template / ing 的img文件夹无法获取文件时,因为需要以下结构: http://127.0.0.1/dev/Site/en/templates/img/
HTML(例如:)
<h1 class='center'>
<a href='http://www.Site1.com/index.php?p=about&l=dev/Site1/es' >
<img src='**templates/img/logo.png**' width='204' height='40' alt='Site1 Logo' /></a>
</h1>
我发现重写规则应用了href的网址中的更改。
答案 0 :(得分:0)
这可能是由于我在您的代码中发现的几个原因, 您的代码目前看起来像这样:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?p=$2&l=$1 [L]
但我认为你的代码应该是:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?p=$2&l=$1 [L,QSA]
我所做的更改是:
+
更改为*
(+
表示一个或多个,而*
表示零或更多,如果您正在寻找img路径,那么您不会从你的htaccess获得两个变量)QSA
(这会使查询字符串追加,所以基本上你将字符串添加到GET我相信吗?)[^/]
更改为.
(该点表示任何角色都应该按照您的要求进行操作)/dev/Site
)我希望我帮助过你,我建议你做一些关于htaccess的研究。
编辑1:
尝试更改图像,包括:
<h1 class='center'>
<a href='http://www.Site1.com/index.php?p=about&l=dev/Site1/es' >
<img src='/templates/img/logo.png' width='204' height='40' alt='Site1 Logo' /></a>
</h1>
改变:
template/img/logo.png
更改为/template/img/logo.png
(您的方式包括(路径前没有/
)告诉服务器必须从网址加载,使用你告诉的反斜杠从根开始看。)