【问题标题】:.htaccess rewriting url for 2 different php.htaccess 重写 2 个不同 php 的 url
【发布时间】:2013-12-17 04:20:17
【问题描述】:

我主要有两个php——share.php和gen.php

SHARE.PHP http://example.com/share.php?name=52afcb2793007

同时

GEN.PHP http://example.com/gen.php?name=images/This%20is%20%20%20example.jpg

我是编写 .htaccess 的新手,并且一直在阅读 stackoverflow 并为 .htaccess 寻找漂亮的 url 制造商。 到目前为止,我可以运行 share.php 或 gen.php 我当前的 .htaccess 看起来像这样

ErrorDocument 404 /404.html
RewriteEngine on
RewriteRule ^new/?$ new.php  [NC]
RewriteRule ^webcam/?$ webcam.php  [NC]
RewriteRule ^([a-zA-Z0-9]+)$ share.php?name=$1
RewriteRule ^([a-zA-Z0-9]+)/$ share.php?name=$1
RewriteRule ^([a-zA-Z0-9]+)$ gen.php?name=images/$1
RewriteRule ^([a-zA-Z0-9]+)/$ gen.php?name=images/$1

当我提供像http://example.com/someimage.jpg 这样的网址时,它会出现 500 服务器错误,我猜这是因为它试图访问 share.php 并收到错误。

我希望得到的输出是这样的 http://example.com/gen/Image.jpg(图像将被连字符而不是 %20 - 也一直在阅读) http://example.com/some_id(转到share.php)-我猜这是.htaccess首先看到并匹配并且id存在的规则,因此给出了结果。

【问题讨论】:

  • 它将是 share.php 因为您的模式对于 share 和 gen 完全相同,所以请求 /blah 匹配它们两者,因此第一个规则首先执行,总是,无论如何。除非您的 php 脚本返回该错误,否则这不应该导致 500 服务器错误。
  • 那么可以对 gen.php 做些什么改变,让它与众不同
  • 您可以做的一件事是在它前面加上一个独特的模式,例如/gen/(something),您的网址将看起来像您链接的内容:http://example.com/gen/Image.jpg,然后“Image.jpg”得到以name=images/Image.jpg 的形式传入 gen.php

标签: regex apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

保持你的 .htaccess 像这样:

ErrorDocument 404 /404.html
RewriteEngine on

RewriteRule ^new/?$ new.php [L,NC]

RewriteRule ^webcam/?$ webcam.php [L,NC]

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^(.+?\.jpe?g)/?$ gen.php?name=images/$1 [L,QSA]

RewriteRule ^([a-zA-Z0-9]+)/?$ share.php?name=$1 [L,QSA]

【讨论】:

  • 我使用了上面的 .htacess 并且由于某种原因我的 css 和 js 文件没有被读取。
  • 这是一个已知问题。在这里查看我的回复:stackoverflow.com/a/20616955/548225
  • 哇......这工作......但现在我从 $phpvalue = $_GET["name"];是 images/gen/Actual Advice Mallard.jpg ... 我所有的图像都在 /images 下,为什么要添加这个 gen。我可以将图像文件夹移动到 gen 下,但我还是不明白
  • 那是因为你使用的是相对路径。如果你总是使用像 /images/Actual Advice Mallard.jpg 这样的绝对路径,那么你的路径永远不会被任何漂亮的 URL 方案弄乱。
  • 像魅力一样工作......谢谢:)
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 2018-12-03
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2018-05-31
  • 2019-12-11
  • 1970-01-01
相关资源
最近更新 更多