Articles of mod rewrite

Apache 2redirect给定列表中的子域名

我有一个Web服务器。 许多域和子域的DNS条目都指向这个服务器。 他们中的大多数,如www.foo.com,foo.com和subdomain.foo.com,我想保留。 但是,我想要redirect的某个子域名列表。 例如,所有这些URL都会parsing到Web服务器。 test.foo.com bar.foo.com baz.foo.com test.foo.com是好的,我们不必做任何事情,但酒吧和巴斯在名单上。 这意味着我们必须redirect到 bar.list.foo.com baz.list.foo.com 我不能在这里做一个子域通配符重写,因为我们想要redirect的子域名列表很长,而且我们不想redirect一长串子域名。 可以/我应该做一个mod_rewrite比较子域到文本文件中的列表? 如果是这样,我该怎么做? 如果不是,我该如何处理这些redirect? 我知道我可以进入一个mod_rewriteconfiguration,每个子域一个,但是这是一个很多的input,必须有一个更好的答案。

apache mod_rewrite help:写一个重写规则的exception

我有一个现有的规则网站: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 以便捕获所有URL并将其转换为此查询。 我怎么能在这个前面的东西,将forms的URL的例外 http://www.example.com/services/{anything} 例如任何引用/services目录中的某个URL?

将subdomain.xyz.comredirect到subdomain.abc.com

嘿所有,我试图移动到另一个域,但在现有的域下有许多子域。 所有的子域将是相同的,但只是与新的域映射。 [subdomain] .xyz.com => [subdomain] .abc.com DNS设置,所有的请求都去适当的盒子,我有一个虚拟主机设置来响应他们,我只需要现在redirect域。 想法?

在“隐藏”“www”域名前缀时redirectvs重写是否有优势?

使用虚拟主机,我已经习惯了使用这个: <VirtualHost: *:80> ServerName www.example.com Redirect permanent / http://example.com/ </VirtualHost> 但我常常看到重写使用: RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 一种方法比另一种更有优势吗?

RewriteRule 对Apache / mod_php没有影响

我试图阻止PHPparsingPOST请求。 当它看到相应的MIMEtypes时会自动执行。 为此,我正在考虑遵循RewriteRule hack: RewriteCond %{HTTP:Content-Type} ^(multipart/form-data\s*;.*)$ RewriteRule mime.php – [E=CONTENT_TYPE:no/parsing;old=%1] 但CGI环境仍然包含原始的[CONTENT_TYPE] => multipart/form.. 我可以设置例如ALT_CONTENT_TYPE troublefree,但这对我没有用处,因为PHP仍然在原始上运行。 同样,更改大小写[E=ContEnt_Type]不会删除旧的标题值,它只是真正改变了大小写。 CONTENT_TYPE env var是在后期构build的吗? 因为我也无法像%{CONTENT_TYPE}那样访问它。 但是再次看,文档http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond没有提到它。 有没有另一种方法来重写这个CGIvariables? 本地testing服务器: Server version: Apache/2.2.14 (Ubuntu) mod_php, not fastcgi Linux snig 2.6.32-29-generic #58-Ubuntu SMP, 2011 x86_64 GNU/Linux

Apache:重写规则以更改文件path

我需要改变一个JPGpath来指向一个网站中的不同图片。 这必须通过apache conf完成,因为网站总是用git更新。 关键是要帮助开发人员轻松地看到他们正在开发哪个开发环境,所以如果我可以改写主标识到他们家里的其他东西的path,这将是完美的。 我试图在VirtualHostconfiguration中添加这个:RewriteRule ^ / img / logo.jpg /home/someUser/logo2.jpg

通配符SSL证书子域与www-Apache 2.2不匹配

下面是我的httpd.conf文件的一个片段。 我遇到的问题是,当我访问“ https://www.subdomain2.domain.co.uk ”时,IE7中的URL栏中出现“证书错误”指示符: "The security certificate presented by this website was issued for a different website's address" 奇怪的是“ https://www.domain.co.uk ”和“ https://subdomain1.domain.co.uk ”正常工作。 <VirtualHost _default_:443> ServerName *.domain.co.uk RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.co.uk$ [NC] RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [P] RewriteCond %{HTTP_HOST} ^subdomain1.domain.co.uk$ [NC] RewriteRule ^(.*)$ http://subdomain1.domain.co.uk/$1 [P] RewriteCond %{HTTP_HOST} ^www.subdomain2.domain.co.uk$ [NC] RewriteRule ^(.*)$ http://www.subdomain2.domain.co.uk/$1 [P]

重命名url隐藏文件扩展名

我想显示url http://some.com/designit/portfolio.php?cat=website&subcat=nature 如 http://some.com/designit/portfolio/website/nature. cat和subcat在URL中可能会出现,但并不总是。 我把这个.htaccess文件放在designit文件夹中: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L,QSA] RewriteRule ^portfolio/?$ portfolio.php[NC,QSA] RewriteRule ^portfolio/([a-zA-Z0-9_-]+)/?$ portfolio.php?cat=$1[L,NC,QSA] 现在,它正在显示 ..some.com/designit/portfolio.php 如 ..some.com/designit/portfolio 但没有显示 ..some.com/designit/portfolio.php?cat=website 如 ..some.com/designit/portfolio/website 我得到“内部服务器错误。服务器遇到内部错误或configuration错误,无法完成您的请求。” 我需要做什么来解决这个问题?

mod_rewrite,干净的URL和页面内容目录

我在我们的根目录下的.htaccess文件中使用了mod_rewrite,这样我们可以在一些特定的情况下使用更清晰的URL。 例如,我们要翻译: http://example.com/Topic/ABCD/Type/Description 成 http://example.com/Topic.php?l=ABCD&e=Type&t=Description 这似乎很容易, .htaccess文件包含: RewriteEngine on RewriteRule ^Topic/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /Topic.php?l=$1&e=$2&t=$3 [L] 但是,所有页面的内容(.CSS文件,图像等)最终都是404',因为不是从相对于重写URL的目录加载“/Common.css”: http://example.com/Common.css 它从未重写的URL的目录中加载它: http://example.com/Topic/ABCD/Type/Description/Common.css 这显然不存在。 然而,我在网上发现了无数的教程,提倡我正在做的一些变体( 这里是一个例子),但是没有提到我遇到的这个问题,所以我想知道是否只有一些configuration我俯视。 他们不能都依靠这些“虚拟”目录,并且包含页面的内容。 我也不想把一切都变成绝对path。 我曾尝试在.htaccess文件的早期添加规则来尝试短路内容请求,例如: RewriteRule \.(css|jpe?g|gif|png)$ – [L] 但似乎没有效果。 无论如何,我不会想到这样的内容甚至会匹配原来的规则,因为该规则中的正则expression式不允许跟随(可选的)尾随斜杠之后的任何内容。 如果我改变规则,使其标志被设置为redirect([R,L]而不是只是[L]),那么它一切正常 – 除了现在浏览器显示重写的PHP参数string,这就是我们试图避免。 过去,我们刚刚接受这个作为解决方法,但是现在我正试图理解为什么这样工作,以及我能做些什么。 如果是相关的,我使用CentOS 6.2和Apache / 2.2.15。

用htaccess重写目录名到php文件?

基本上文件夹等有文件: contact.php help.php news.php 我如何使/etc/contact直接到/etc/contact.php ?