Articles of mod rewrite

在Apache中寻找相当于ProxyPassReverseMatch来修复丢失的尾随正斜杠问题

我有两个Web服务器,www.example.com和www.userdir.com。 我试图使www.example.com作为前端代理服务器来处理http://www.example.com/~username格式的请求,例如 http://www.example.com/~john/ 以便它发送一个内部请求 http://www.userdir.com/~john/ 到www.userdir.com。 我可以在Apache中实现这一点 ProxyPass /〜john http://www.userdir.com/~john ProxyPassReverse /〜约翰http://www.userdir.com/~john ProxyPassReverse是必要的,因为没有像http://www.example.com/~john这样的请求而没有尾随的正斜杠将被redirect为http://www.userdir.com/~john/ ,我希望我的用户留在example.com空间。 现在,我的问题是我有很多的用户,我不能在httpd.conf中列出所有这些用户名。 所以,我用 ProxyPassMatch ^(/〜。*)$ http://www.userdir.com$1 但在Apache中没有ProxyPassReverseMatch这样的事情。 没有它,每当url中的尾部正斜杠丢失,就会被引导到www.userdir.com,这不是我想要的。 我也尝试了以下内容来添加尾随的正斜杠 RewriteCond%{REQUEST_URI} ^ /〜[^。/] * $ RewriteRule ^ /(。*)$ http://www.userdir.com/$1/ [P] 但是它会渲染一个破碎的图像和CSS的页面,因为它们链接到http://www.example.com/images/image.gif而它应该是http://www.example.com/~john/images /image.gif 。 我一直在Google上search很长一段时间,但仍然找不到一个好的解决scheme。 如果有人能够对这个问题有所了解,我们将会非常感激。 谢谢!

你能在我的.htaccess中看到错误吗?

好吧,经过许多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 […]

mod_rewrite和Apache的问题

我们正在尝试设置一些帮助台软件。 这是一个基于networking的软件应用程序,允许客户和工作人员login,访问票据和供应更新等。我们正在处理的两个不同的领域,我们使用和mod_rewrite规则,使这一切工作与我们仅绑定到其中一个域的SSL证书。 我将列出下面的用例场景以及我们遇到的挑战。 如果您访问http://support.domain1.com/support,则可以redirect到https://support.domain2.com/support 如果您访问http://support.domain2.com/support,则可以将其redirect到https://support.domain2.com/support 如果您访问https://support.domain1.com/support,则会引发“服务器无法find”的错误 如果您在访问https://support.domain2.com/support后访问https://support.domain1.com/support/,则会出现“此连接不可信”错误,该错误信息仅适用于domain2域而不是domain1域名 我已经尝试了几乎每一个mod_rewrite规则,我可以想到帮助做这个工作,我一直没能find正确的组合。 我很好奇,如果有人有关于如何使redirect工作正确的一些想法。 最后,我们需要所有的客户和员工loginhttps://support.domain2.com/support,而不pipe之前列出的URL组合如何。 在此先感谢您的帮助。

Apache重写所有stream量到新的基地

我想使用Apache重写为所有stream量redirect到新的基础url。 我不希望path是相同的,我希望每个请求被redirect到“ http://sub.mynewdomain.com ”。 我的.htaccess文件看起来像这样,但什么都不做: RewriteEngine On RewriteRule . http://sub.mydomain.org/ [R=301,L]

Apache重写忽略某个目录及其所有内容

我正在寻找Apache中mod_rewrite的重写规则,这样当请求一个特定的子目录时,它和它的所有内容被redirect到另一个位置。 我目前有以下几点: RewriteEngine on RewriteRule ^/SUBDIRECTORY(/.*)? /another/location 但是,这只是设法redirect/ SUBDIRECTORY请求到所需的位置,而所有其他(如(/ SUBDIRECTORY /,/ SUBDIRECTORY /任何/其他)给我一个错误告诉我,redirect是无效的…错误是 Error 310 (net::ERR_TOO_MANY_REDIRECTS) 就好像redirect循环一样… 有任何想法吗? 谢谢!

Mod_rewrite问题 – 这个文件的代码是做什么的?

我在这里研究.htaccess,并决定尝试我find的代码: RewriteRule ^([^\.]+)$ $1 [T=application/x-httpd-php-source] 这到底是做什么的? 我知道这是一个重写规则,但[T =]表示什么? 我知道R是redirect的,但是这对我来说是新的,所以知道这是什么是有用的。 另外,RewriteRule之后的regex符号表示什么? 我正在刷新我的知识,意识到我需要良好的.htaccess技能为我的项目! 我了解一些mod_rewrite和.htaccess并自己研究过,但这个是相当新的,所以所有的帮助表示赞赏。 谢谢

htaccess unhungry正则expression式导致500错误

在我的本地WAMP服务器.htaccess中的以下行不会造成任何问题,并执行我想要的: RewriteEngine On Options FollowSymLinks RewriteRule ^foo/([0-9]+)/[a-z0-9-]*?$ foo.php?id=$1 [L] 当我上传到我的托pipe(LAMP)网站时,它会导致一个500错误(不pipe重写小册子是否进入播放)。 经过多less修补之后,修复是去除unhungry / lazy修饰符的正则expression式,即: RewriteEngine On Options FollowSymLinks RewriteRule ^foo/([0-9]+)/[a-z0-9-]*$ foo.php?id=$1 [L] 现在,在我提出的情况下,可以说正则expression式的差异是否有用,但在我看来,第一个例子是有效的,而且它在我的本地WAMP服务器上工作。 那么有没有人有清楚的想法,为什么我得到了500错误?

从一个域访问文件夹时返回404页,但允许从其他域和IP地址访问

情况: 当从example.com域访问一个文件夹(“hidden”)时,我想返回一个404页面(“404.php”)。 我希望可以从一个子域(“hidden.example.com”)或从一个不同的域(“hidden.com”)访问同一个文件夹,这两个域都在单个VirtualHost条目中configuration。 服务器有多个监听的IP地址。 每个IP地址提供与example.com域相同的内容(共享一个VirtualHost条目)。我希望可以从IP地址访问该文件夹。 服务器configuration为使用SSL / TLS / HTTPS。 HTTPS在example.com上是可选的,但HTTPS在隐藏文件夹的.htaccess文件中执行,使用下面显示的重写规则。 /www/hidden/.htaccess RewriteCond %{HTTPS} !=on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 我知道{SERVER_ADDR}给出服务器的IP地址,但它是否返回客户端请求的IP地址? 我也开始认为在VirtualHosts文件中的东西会更合适。 对此有何想法? 应该允许什么: http://87.65.43.21/hidden/ https://87.65.43.21/hidden/ http://12.34.56.78/hidden/ https://12.34.56.78/hidden/ http://hidden.example.com/ https://hidden.example.com/ http://hidden.com/ https://hidden.com/ http://www.hidden.com/ https://www.hidden.com/ 404.php应该是404-ed http://example.com/hidden/ https://example.com/hidden/ http://www.example.com/hidden/ https://www.example.com/hidden/ http://example.com/hidden/hiddenfile.php https://example.com/hidden/hiddenfile.php etc. 谢谢。

只有在Win7上将RewriteLogLevel设置为> 0后,才能进行Apache“连接重置”

我正在使用工作计算机上的mod_rewrite,它在XP上运行apache 2.2。 更有针对性的是,我使用RewriteLogLevel 9进行debugging。 没问题。 我回家在Windows 7上使用apache 2.2做更多的工作。configuration唯一的改变是添加和设置RewriteLog和RewriteLogLevel。 重新启动Apache后,我从chrome获取ERR_CONNECTION_RESET。 如果我将RewriteLogLevel设置为0,则不会出现错误。 大于0的任何东西都会得到ERR_CONNECTION_RESET。 我认为这可能是权限,但我检查了我添加的configuration: RewriteLog "c:/wamp/logs/rewrite.log" RewriteLogLevel 1 c:/wamp/logs/rewrite.log被创build,但没有被写入。 错误日志没有显示任何exception。 任何想法,我可能会寻找线索?

nginxredirect到一个子域,即使没有结尾的斜线

我只是在我的专用服务器上安装并部分configuration了nginx。 但是我对理解正则expression式有些困难。 我想让nginxredirectwww.mydomain.com/forum/和www.mydomain.com/forum(注意缺less的尾部斜杠;不区分大小写;同样适用于“forums”而不是“forum”)到forum.mydomain .COM /。 这就是我想到的: location ~* ^/(forum|forums) { rewrite ^/(.*)/(.*)$ http://forum.mydomain.com/$2? permanent; } …但由于某种原因,它只适用于斜线。 : – / 请帮帮我! 提前致谢!