Articles of mod rewrite

如何使mod_rewrite规则使用子域名重写URL?

如何使mod_rewrite规则使用子域名重写URL? 我想要做的是这样的: 转发请求从http://agency1.company.com到: https ://appname.company.com/appname/login.jsp ?版权名称=权限1 它不需要是一个活的代理; 它可以只是一个元刷新types的东西或基本的URL向前。 似乎这将是一个普遍的scenerio,但我不能在互联网上find一个例子。 很多关于重写URI的例子,但是关于整个URL重写的例子并不多(正如我在上面所做的那样)。

.htaccess mod_rewrite不能正常工作

我在我的.htaccess文件中有这样的代码: RewriteRule /user/([a-zA-Z0-9]+) /iduser.php?username=$1 它应该使/user/oliolio请求iduser.php?username=oliolio ,但它不起作用。 🙁 你知道为什么吗?

Apache2:重写规则没有显示在地址栏中?

我有一个域,example.com。 这是我的apache2 ReWrite规则: RewriteEngine on RewriteRule ^([^/.]+)/?$ index.php?uname=$1 [L] 当我访问http://example.com/Eamorr时 , http://example.com/Eamorr出现在浏览器的地址栏中。 我希望http://www.example.com/index.php?uname=Eamorr出现在地址栏中! (我的JavaScript需要parsingGET参数) 这可能吗? 提前谢谢了,

为什么Apache忽略我的重写规则?

我有一个旧的应用程序与URL的forms… http://apps.myserver.com/appname/viewItem.akt?p=123 我正在用一个像这样的URLreplace这个旧的应用程序… http://appname.myserver.com/item/123 我已经尝试添加几个不同的重写规则到httpd/httpd.conf并重新启动服务器,但我不断收到404错误。 我已经尝试了一些事情… RewriteEngine on RewriteRule ^.*viewItem.akt\?p=([0-9]*)$ http://appname.myserver.com/item/$1 [R] 要么… RewriteRule ^/appname/viewItem.akt\?p=([0-9]*)$ http://appname.myserver.com/item/$1 [R] 结果始终是“在此服务器上找不到所请求的URL /appname/viewItem.akt”,就好像重写规则不在那里一样。 我在访问日志中得到的是… [IP address] – – [09/Sep/2011:21:27:37 -0700] "GET /appname/viewItem.akt?p=1018 HTTP/1.0" 404 248 我testing了Rubular中的所有正则expression式,以确保它们匹配传入的请求。 我错过了什么? 如果它是相关的,旧的应用程序是运行在Tomcat下的Java应用程序,并且我有一个ProxyPass像这样设置… (我正在显示这些行注释,因为他们是当我试图让重写规则工作。) # ProxyPass /appname http://apps.myserver.com:8080/appname # ProxyPassReverse /appname http://apps.myserver.com:8080/appname 但是这不应该是正确的? 只要我的重写规则匹配请求,它应该正确地发送它,不应该吗?

将www.site.com/feedsredirect到www.site.com/Layouts/feeds.html,保持url不变?

假设用户访问www.site.com/feeds 。 它必须显示www.site.com/Layouts/feeds.html ,保持url完好无损。 如何用.htaccess做到这一点? 失败 RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.site\.com/feeds$ [NC] RewriteRule ^(.*)$ http://www.site.com/Layouts/feeds.html [R=301,L] 404这个? [联系我的pipe理员关于这个,其次,也许是一个系统的东西] RewriteEngine On RewriteRule ^/feeds$ index.html [P]

Apache mod_rewrite,多个variables

我正在努力与mod_rewrite和replace多个variables与正则expression式。 我试图重写以下内容: www.mysite.com/avatars/funny/1 成: www.mysite.com/avatars.php?genre=funny&page=1 现在我有以下,这不是真的诀窍: RewriteRule ^/avatars/?(.*)/?(.*)$ /avatars.php?genre=$1&page=$2

我如何创build多个共享一组或RewriteRules的VirtualHost条目?

我有一个Apacheconfiguration三个虚拟主机条目。 每个条目绑定到不同的端口,以便我们可以根据端口提供不同的SSL证书。 我们的负载均衡器透明地将请求redirect到某些域名到networking服务器上的特定端口。 我的问题是,我有一个相当复杂的RewriteConds和RewriteRules的列表,这三个主机必须是相同的。 三个条目之间的唯一区别应该是ServerName , SSLCertificateFile和SSLCertificateKeyFile条目。 目前,我在每个VirtualHost条目中都复制了RewriteRules,但这使得难以更新规则并确保它们在各个条目中都是相同的。 所以我的问题是, 有没有一种方法可以将RewriteRules放在一个位置,但这会导致它们被应用到所有三个VirtualHost条目中? 作为一个方面说明,我也在一个单独的非SSLconfiguration文件中使用相同的规则。

访问目录,而mod重写打开

我正在使用下面的.htaccess文件来保持我的URL干净 RewriteEngine On RewriteRule ^([a-zA-Z\-0-9]+)/?$ index.php?get1=$1 [B] RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2 RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ index.php?get1=$1&get2=$2&get3=$3 它的工作到目前为止,但我现在想访问一个目录。 例如。 如果有人去mysite.com/news/post-title,URL被重写,一切正常。 现在我想拥有一个目录,当有人转到mysite.com/directory并显示其内容时,可以查看该目录。 有没有办法做到这一点?

Apache2 – 将一堆指定的path名​​URL重写为一个URL

我需要重写一大堆SEO(大约100左右),以后可能还会增加更多(可能在50-100之后)。 我需要一个灵活的方法来做到这一点,目前我唯一能想到的方法是使用重写引擎编辑.htaccess文件。 例如,我有一大堆这样的URL(请注意,查询string是不相关的,dynamic的,可以是任何东西,我只是纯粹用它作为例子,我只关注path名 – 部分在主机名和查询string之间,如下所示): http://example.com/ seo_term1 ?utm_source = google&utm_medium = cpc&utm_campaign = seo_term http://example.com/ another_seo_term2 ?utm_source = Facebook&utm_medium = cpc&utm_campaign = seo_term http://example.com/ yet_another_seo_term3 ?utm_source = example_ad_network&utm_medium = cpc&utm_campaign = seo_term http://example.com/ foob​​ar_seo_term4 http://example.com/ blah_seo_term5 ?test = 1 等等… 他们都被重写(现在): http://example.com/ : http://example.com/ 这样做的最有效率的方法是什么,以便我可以在将来添加更多条款? 我遇到的一个解决scheme是做到这一点(在.htaccess文件中): RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule […]

Apache 410没有使用mod_alias也没有mod_rewrite

Apache 2.2(在运行cPanel的服务器上)似乎忽略了返回410状态的指令。 这发生在mod_alias的redirect(使用410或者gone )和mod_rewrite的RewriteRule(使用[G] ),在.htaccess文件中使用。 这工作: Redirect 302 /somewhere /gone 但是这不是: Redirect 410 /somewhere 该行被忽略(就像它已被评论),并且该请求落在其他规则(将其引导到不相关的通用error handling脚本)上。 同样,试图使用带有[G]标志的RewriteRule不起作用,但是同样的规则重写到生成410的脚本也是如此 – 所以规则不是问题,而是相当于410 /走了不行, 我可以通过发送410的脚本来解决这个问题,但是这很烦人,我不明白为什么它不工作。 有任何想法吗?