【发布时间】: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