我们有Tomcat 5.5和Apache 2.2 mod_proxy。 我们想要漂亮的url。 例如,这或多或less是我们的url现在的样子: http://example.com/foo/app/home (home page) http://example.com/foo/app/bar (other parts of the web app) http://example.com/foo/api/qux (API hooks) http://example.com/foo/quux (misc) 我们希望公开的url更简单,例如: http://example.com/ (home page) http://example.com/bar (other parts of the web app) http://example.com/api/qux (API hooks) http://example.com/quux (misc) 我知道如何让Apache将传入的URL重写为Tomcat使用的较长的URL,但是我担心这可能会混淆Tomcat。 我有相当的经验与Apache,但Tomcat的新手。 此外,我们想要重写,而不是redirect(例如, http : //example.com/不应该简单地redirect到http://example.com/foo/app/home ),因为我们要保持丑陋完全地址栏外的URL。
我需要build立一个Apache的RewriteRule为了有这样的行为: example.com/foo => index.php?module=foo&action=&args= example.com/foo/bar => index.php?module=foo&action=bar&args= example.com/foo/bar/baz => index.php?module=foo&action=bar&args=baz example.com/foo/bar/baz/foobaz => index.php?module=foo&action=bar&args=baz/foobaz 我写了这个正则expression式: RewriteRule ^(.[^/]*)(\/)?(.[^/]+)?(\/)?(.+)?$ index.php?module=$1&action=$3&args=$5 [L,QSA] 它工作的很好,我只需要告诉Apache忽略所有以特定扩展名(例如.jpg,.png,.css,.js,.gif等)结尾的url。 这些应该被视为正常,例如example.com/css/style.css应显示CSS文件(是否存在)。 任何想法?
现在部分解决的问题。 一个能够stream利地讲Apache的天才可以照亮这个事情。 GIVEN:大多数代理服务器,不要使用“?”来caching资源 即使在响应中存在Cache-control:public头部,它们的URL也是如此。 要为这些资源启用代理caching,我必须从对静态资源的引用中删除查询string,而不是将参数编码到文件名称中。 目前有 <img src="/imgcpu?src=folder1/photo_citty.jpg&w=3500&h=10&c=p&q=90" /> <img src="/imgcpu?src=folder2/photo_doggy.jpg&w=100&h=200&c=p" /> <img src="/imgcpu?src=folder3/photo_birds.jpg&w=200&h=500&f=bw" /> <img src="/imgcpu?src=folder3/photo_frogs.jpg&w=200&f=bw" /> 想 <img src="/IMG-folder1/photo_citty.jpg_w3500_h10_cp_q90" /> <img src="/IMG-folder2/photo_doggy.jpg_w100_h200_cp" /> <img src="/IMG-folder3/photo_birds.jpg_w200_h500_cs_fbw" /> <img src="/IMG-folder3/photo_frogs.jpg_w200_fbw" /> 图像将驻留在根目录下的1个文件夹中(永远不会更深) img.php?src =或者img?src =将永远被永远命名 我知道“img?src =”是一个不好的部分,已经处理了: # Rewrite imgcpu?src= thumbnail maker to nice static urls RewriteRule ^IMG-(.*) /imgcpu?src=$1 [L] 但其余的我坚持。 任何和所有的线索是非常受欢迎的。 谢谢。 进展 IMG-folder1/photo_citty.jpg&w=3500&h=10&c=p&q=90 […]
我想设置我的nginx代理子域http://blog.mydomain.com到http://myblog.blogspot.com ,但我不想重写URL。 因此,用户将看到mydomain.comurl,而不是blogspoturl。 我该怎么做? 谢谢。
这是屁股问题的痛苦! 鉴于:大多数代理,不要caching资源与“?” 即使在响应中存在Cache-control:public头部,它们的URL也是如此。 为了启用这些资源的代理caching,我已经从引用到静态资源中删除查询string,在非常丑陋的Apache正则expression式代码!* 第一部分完成与Dennis Williamson & Mark Henderson马克亨德森两个天才的线索 第二部分在这里,这个问题涵盖了第二部分:使代码优雅和不太干净 以前有过 <img src="/imgcpu?src=folder1/some_funny_kitty.jpg&w=3500&h=10&c=p&q=90" /> <img src="/imgcpu?src=folder3/camels_ride_on_birds.jpg&w=200&h=500&f=bw&q=10" /> <img src="/imgcpu?src=folder3/clay_loves_frogs.jpg&h=200" /> 工作中 <img src="/IMG-folder1/some_funny_kitty_w3500_h10_cp_q90.jpg" /> <img src="/IMG-folder3/camels_ride_on_birds_w200_h500_fbw_q10.jpg" /> <img src="/IMG-folder3/clay_loves_frogs_h200.jpg" /> 在这个不雅的代码的成本 # Rewrite imgcpu?src= thumbnail maker to nice static urls RewriteCond %{REQUEST_URI} ^IMG.*$ RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_f(.+)_q(.+).jpg$ imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&f=$5&q=$6 [L] RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_f(.+).jpg$ imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&f=$5 [L] RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_q(.+).jpg$ imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&q=$5 [L] […]
我有一个Apache服务器,提供二进制文件到应用程序(而不是浏览器)。 发出请求的应用程序需要HEX格式的HTTP Content-MD5头文件。 Apache中的默认选项是Base64。 如果我将“ContentDigest on”添加到我的VirtualHost,我在Base64中得到这个头。 所以我写了一个Perl脚本,md5digesthex.pl,它给了我正是我想要的:hex格式的MD5,但我努力与RewriteRule让我的服务器发送结果。 这是我目前的重写配方: RewriteEngine on RewriteMap md5inhex prg:/www/download/md5digesthex.pl RewriteCond %{REQUEST_URI} ^/download/(.*) RewriteRule ^(.*) %{REQUEST_URI} [E=HASH:${md5inhex:$1}] Header set Content-MD5 "%{HASH}e" env=HASH 问题是,我似乎无法根据md5inhex映射函数的输出设置HASH环境variables。 看起来这种行为是不支持的,我在一个迷失,如何制定这个…
好吧,经过许多search,试用和错误,我已经设法创build一个.htaccess做我想做的事情(请参阅代码块后的解释和问题): <IfModule mod_rewrite.c> RewriteEngine On #1 If the requested file is not url-mapper.php (to avoid .htaccess loop) RewriteCond %{REQUEST_FILENAME} (?<!url-mapper\.php)$ #2 If the requested URI does not end with an extension OR if the URI ends with .php* RewriteCond %{REQUEST_URI} !\.(.*) [OR] RewriteCond %{REQUEST_URI} \.php.*$ [NC] #3 If the requested URI is not in an […]
我们正在努力进一步提高一些旧的HTML网站的速度,以获得更好的SEO结果。 我们现在已经应用了一些缩小措施,结合HTML,CSS等我们使用一个小的虚拟化基础设施,我们一直希望使用轻+标准HTTP服务器configuration,所以第一个可以提供图像和静态内容与另一个PHP ,重写等。我们可以很容易地使用虚拟机,使用相同的文件和虚拟主机(绑定挂载)在Apache的conf,但几乎没有任何模块加载。 这意味着光照httpd将有更小的指纹,使我们能够更快,更快地运行,有更多的minSpareServer运行等。 因此,当浏览器也从加载来自不同主机名称的静态内容中受益时,我们已经考虑在我们的主服务器(main.com)上build立一个重写规则来“redirect”所有图像和css * .jpg,* .gif,* .css等相同的说cdn.main.com因此浏览器能够有更多的连接。 问题是,假设我们已经有一个非常复杂的重写规则集(我们手动操纵许多旧的URL来search引擎优化)是否值得? 我的意思是将主要的Apache的额外负载必须redirectmain.com/image.jpg(我明白,我们将不得不做一个301)cdn.main.com/image.jpg +然后cdn.main.com有为了达到这个目标,要比我们在浏览器上存档的收益大吗? 一个页面上的所有图像的301多余可以通过谷歌惩罚? 大公司如何解决这个问题,原始代码是否已经包含了从cdn链接到绝对path的图像? 编辑只是为了澄清,我们的关注是不要做太多与服务器性能或带宽。 我们显然可以使用外部CDN服务器,但是我们有足够的CPU和带宽。 我们所关心的是如何让拥有大量半静态HTML内容的“旧”网站受益于通过Apache分割图像和静态内容的连接,而不必将html更改为绝对path(即image.jpg至cdn.main.com /image.jpg发生在服务器上而不是代码)
我已经安装了twiki.so我的twiki现在访问http://mysite.com/docs/bin/view我怎么可以使这个urlhttp://mysite.com/docs/,以便它将访问相同。 请build议。
我希望能够将漂亮的URL映射到nginx网站的文件系统。 但是,我很难弄清楚它是如何工作的。 我想采取像/action/method/param/param2/映射到/action/method.php/param/param2 。 根据nginx文档,这样的东西应该工作。 location / { include fastcgi_params; # regex: word / word (followed by anything) fastcgi_split_path_info ^(\w+/\w+)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name.php; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_pass 127.0.0.1:9000; }