我真的被困在这里了。
我同时有 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
当 URL 以倒数第二个格式传递时(如上面的示例),我没有问题。但是,如果添加尾部“/”:www.mysite.com/faq/
,我的外部脚本引用将中断:(例如src=js/script.js
)...
最佳答案
问题编号。 1:
Apache 根据 DocumentRoot
或 Alias
值解释前导斜杠
因此,如果您想让生活更轻松,请使用此创建VirtualServer
DocumentRoot "/Sites/www.mysite.com"
Apache documentation: DocumentRoot
或别名
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
的建议。
关于php - Apache 服务器上的相对路径等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588341/