【问题标题】:Issues when creating pretty URL that uses actual site urls创建使用实际站点 URL 的漂亮 URL 时的问题
【发布时间】:2011-07-14 04:52:17
【问题描述】:

我想创建类似于 downforeveryoneorjustme.com 网站的功能。他们使用漂亮的 URL 来获取任何给定站点的 URL。我确定他们使用 htaccess 来执行此操作,但是我使用的方法遇到了问题。

这是我用来将站点 URL 发送到 file.php 的 .htaccess 文件:

RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteCond %{SCRIPT_FILENAME} !-d 

RewriteRule ^(.+)?$ /file.php?var=$1

但是当我输入类似 mysite.com/http://google.com 它发送文件的变量是http:/google.com(缺少斜杠)。我无法弄清楚为什么会发生这种情况。

此外,当我输入类似mysite.com/existingfolder 的内容时,其中existingfolder 是我网站上的一个文件夹,它总是无法正常工作。它传递给文件的变量是missing.html,而不是existingfolder。在这种情况下,文件不显示图像。找不到图像,我假设它是因为它在网站上的不正确文件夹中搜索图像。它可能认为它在existingfolder 中,而不是它应该在的普通文件夹中。

有人知道我为什么会遇到这些问题吗?我知道 htaccess,我假设它与此有关。

感谢您的帮助。

【问题讨论】:

标签: .htaccess mod-rewrite friendly-url


【解决方案1】:

我确定他们使用 htaccess 来执行此操作

我不是。我什至不确定他们使用的是 Apache。

mod_rewrite 并不总是解决所有 URL 处理问题的方法。它当然容易出现基于路径的 URL 处理的一些怪癖,包括删除双斜杠。

我建议从您的脚本中读取特定于 Apache 的 REQUEST_URI 变量,而不是依靠重写来获取参数。这将为您提供浏览器请求的路径,无需任何处理。

【讨论】:

  • 如何从我的脚本中读取 REQUEST_URI 变量?另外,我尝试了链接问题中详述的方法,但是这些方法都不适合我。 RewriteCond %{THE_REQUEST} ^GET\ /(https?://[^\s]+) RewriteRule ^https?:/file.php?var=%1 [L] 这是另一个页面上的建议,它仍然不适合我
猜你喜欢
  • 1970-01-01
  • 2013-05-25
  • 2012-07-20
  • 1970-01-01
  • 2011-03-09
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多