我真的被困在这里。
我一次有2个问题:
首先,我的网站存储在本地开发和实时服务器上,位于子目录中......因为我正在多个站点上工作。即。
/Sites/www.mysite.com/(site files here)
当我在网页中引用文件时,我想引用我的/images
目录而不将每次出现的硬编码都称为/www.mysite.com/images/myfile.jpg
有没有办法简单地重新定义服务器如何解释前导“/”?
关于PHP mod_rewrite的问题二
我有这套重写规则。目标是将www.mysite.com/faq变成www.mysite.com/index.php?page="faq“
RewriteEngine On
RewriteCond %{REQUEST_URI} !mysite.com
RewriteRule (.*) mysite.com/$1
RewriteRule ^([a-zA-Z0-9_-]+)$ /mysite.com/index.php?site=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /mysite.com/index.php?site=$1
当网址以倒数第二种格式传递时,我没有问题(如上例所示)。但是,如果添加了尾部“/”:www.mysite.com/faq/
,我的外部脚本会引用break :(例如src=js/script.js
)...
答案 0 :(得分:2)
质疑没有。 1:强>
Apache正在根据DocumentRoot
或Alias
值
因此,如果您想让自己的生活更轻松,请使用此
创建VirtualServer
DocumentRoot "/Sites/www.mysite.com"
Apache documentation: DocumentRoot
或Alias
Alias /mysite /Sites/www.mysite.com
或使用路径相对寻址。
问题2:
RewriteEngine On
RewriteCond %{REQUEST_URI} !mysite.com
RewriteRule (.*) mysite.com/$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)$ /mysite.com/index.php?site=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/$ /mysite.com/index.php?site=$1 [L]
根据netcoder
建议。
答案 1 :(得分:1)
问题1:不要使用前导斜杠,路径将相对于调用脚本的文件位置。
所以如果调用脚本在目录
中/www.mysite.com/myscript.php
并在
脚本中使用文件路径图像/ myfile.jpg
这应该适用于您正在做的事情,并导致
/www.mysite.com/images/myfile.jpg