php - Apache 服务器上的相对路径等

标签 php apache mod-rewrite relative-path

我真的被困在这里了。

我同时有 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 根据 DocumentRootAlias 值解释前导斜杠

因此,如果您想让生活更轻松,请使用此创建VirtualServer

DocumentRoot "/Sites/www.mysite.com"

Apache documentation: DocumentRoot

别名

Alias /mysite /Sites/www.mysite.com

Apache documentation: Alias

或使用路径相对寻址。

对于问题 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/

相关文章:

apache - 无效命令 'WSGIScriptAlias',可能拼写错误或由未包含在服务器配置中的模块定义操作 'configtest' 失败

apache - 如何在 Nginx 中使用 .htaccess 文件?

apache mod_rewrite 不工作或未启用

apache - robots.txt 和 htaccess(而 CMS 位于子文件夹中)

php - 找不到sql设置值有什么问题

php - 在 php 中分组以构建报告

php - 我们如何知道 PDO 正在逃避 SQL 注入(inject)?

php - 使用从 mysql 数据库获取的字段名称和值填充表

linux - 检查哪个脚本在/tmp 中创建文件

apache - 使用mod重写来重写url而无需重定向