apache - 为什么 Apache 的 RewriteRule 会显示本地路径?

标签 apache .htaccess mod-rewrite

我正在尝试在 .htaccess 中使用 RewriteRules使用相对路径,但 Apache 似乎想输出 物理路径而不是 服务器 每当我尝试输出相对路径时的路径。绝对和服务器根路径工作正常。例如:

RewriteEngine On

# this works fine, 127.0.0.1/ab redirects to 127.0.0.1/cd
RewriteRule ^ab$ /cd [R]

# this doesn't work... 127.0.0.1/wx redirects to 127.0.0.1/C:/path/to/files/yz
RewriteRule ^wx$ yz [R]

添加一个“RewriteBase /”可以解决问题,但是每个.htaccess都添加路径很繁琐,这使得更改目录结构变得更加困难。是否有原因 RewriteBase 默认为当前 物理路径而不是当前 URI 小路?

最佳答案

对于那些碰巧从谷歌来到这里的人(像我一样),简短的 list :

  • 确保您有 RewriteBase / (或任何其他值 - 声明很重要)
  • 如果您使用重定向( [R][R=30x] 等) - 确保新 URI 以 / 开头并包含相对于您的域根的路径
  • (如果以上还没有帮助)重新启动Apache,清除浏览器的缓存(特别是如果您曾经使用过[R=301])

  • 这就是拯救我的一天,也许它也会拯救你的一天。

    关于apache - 为什么 Apache 的 RewriteRule 会显示本地路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162871/

    相关文章:

    Apache 重写规则不适用于变量?想要禁用某个路径的 HTTPS

    python - 从 CGI 脚本启动后台进程/守护进程

    php - 如何让 php include_path 在自定义目录 '/var/custom_directory' 上工作?

    php - CodeIgniter 仅显示默认 Controller

    php - 目录重定向规则

    php - 使用 .htaccess 隐藏 URL 关键参数

    ssl - 如何防止 Nginx 将位置重定向到配置的 proxy_pass url 和端口号

    php - 将 .htaccess 应用于所有子目录

    php - MySQL PHP 查询优化 - 反馈

    apache - LAMP 中禁止访问