Articles of mod rewrite

Apache 404错误当“索引”在path中

我有一个长期存在的mod_rewrite和1and1共享主机问题(希望共享主机不会被迁移到“sharedserverfault”)。 关于重写规则的一切工作正常 – 除了当'索引'在path中。 然后我得到一个Apache 404错误。 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ – [NC,L] RewriteRule ^.*$ /index.php [NC,L] 到目前为止,相当标准,在大多数服务器上运行良 在1and1的服务器上,如果index是顶级的“目录”,我会得到一个404错误。 任何以' http://example.com/index '开头的东西都会给404。 http://example.com/index http://example.com/index/action http://example.com/index/what/ever.anything 如果我复制index.php到bootstrap.php,并改变.htaccess文件指向那里, 删除 index.php,它将工作。 然而,这使得更新服务器很痛苦 – 任何想法是什么Apache设置造成这种? 显然,我不能改变主configuration文件,但我可以用.htaccess文件覆盖设置。

尝试使用apache2 Rewrite将用户移动到一个网页

我目前正试图让人们去http://a.abc.com (我得到一些X-HTTP头,并保存在一个会话中,我发送到https网站)我总是希望他们去的a.abc.com网站,如果http_host不是a.abc.com我希望他们redirect他们:) 我希望你们能帮忙? <VirtualHost *:80> ServerName a.abc.com ServerAlias b.abc.com bcd.com efg.com DocumentRoot /var/www/wclp/public SetEnv APPLICATION_ENV production RewriteEngine On RewriteCond %{HTTP_HOST} !a.abc.com$ RewriteRule ^(.*)$ http://a.abc.com/$1 [R=301, L] </VirtualHost> <VirtualHost *:443> ServerName a.abc.com ServerAlias b.abc.com bcd.com efg.com DocumentRoot /var/www/wclp/public SetEnv APPLICATION_ENV production SSLEngine on SSLCertificateFile /etc/apache2/ssl/crt.pem SSLCertificateKeyFile /etc/apache2/ssl/key.pem RewriteEngine On RewriteCond %{HTTP_HOST} !a.abc.com$ RewriteRule ^(.*)$ http://a.abc.com/$1 [R=301, […]

如果在特定目录中访问,Apache重写URL

我们有两台服务器,一些内容被移到了我们的旧服务器上,但是,networking上还有一些旧的服务器上的旧目录的链接。 所以,任何网页www.mysite.com/Pages/page.html我需要重写/redirect到www.mysite2.com/Pages/page.html。 因此,如果任何人访问www.mysite.com/Pages目录中的任何文件,他们将获得URL改写为较旧的服务器www.mysite2.com。 我是否以错误的方式去做这件事?

使用mod_rewrite将子域redirect到隐藏文件夹

我想保留我的博客在子文件夹domain_com/htdocs/blog并访问它使用blog.domain.com。 我可以使用Apache的mod_rewrite获取它: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^blog\.domain\.com RewriteCond %{HTTP_HOST} !^/blog RewriteRule ^(.*)$ /blog/$1 [L] 但是我也想把hxxp://domain.com/blogredirect到hxxp://blog.domain.com(只是因为我想把它从用户中隐藏起来)。 简单的redirect如: RewriteCond %{HTTP_HOST} ^wojtyniak\.com$ RewriteRule %{REQUEST_URI} ^/foo RewriteRule ^(.*)$ http://foo.wojtyniak.com [L,R=301] 导致redirect循环。 有什么办法可以在没有循环的情况下进行这样的redirect吗? 十分感谢! PS。 对不起,对于那些hxxp的东西,但serverfault认为这些链接,并不允许我发布多个。

我应该在这里为我的.htaccess文件

我有一个wordpress博客,安装在我的域的根目录。 我已经把另一个软件放在一个子目录中。 当我尝试访问子目录( http://www.blah.com/abc )时,我从wordpress中得到一个404错误。 我已经做了一些阅读,它看起来像我需要有一个rewritecond和一个重写规则之前的rewritebase: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 但是我不知道我需要什么。 G-人 结束WordPress

关于RewriteRule和HTTP_HOST服务器variables的问题

在评估redirect到特定URL并重写条件满足的重写规则时,是否可以使用HTTP_HOST作为要redirect到的URL的一部分? 问题示例: RewriteRule .*\.(jpg|jpe?g|gif|png|bmp)$ http://%{HTTP_HOST}/no-leech.jpg [R,NC] 这个问题背后的动机是希望创build一个单一的htaccess文件,该文件可以匹配一个附加域(共享主机帐户)和无限多个子域,以防止图像被盗链。

forum.mydomain.org到mydomain.org/forum/

我可以用mod_rewrite重写forum.mydomain.org到mydomain.org/forum/吗? 因为我不能让子域名工作 – 更新 – 对不起克里斯,你的答案没有工作。 我的域名有一个名为forum的子域名,里面有我的IPlogging 我的主机文件: 127.0.0.1 localhost 127.0.0.1 forum 的httpd-vhosts.conf <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "c:/wamp/www" ServerName localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot "c:/wamp/www/forum" ServerName forum ErrorLog "logs/your_own-error.log" CustomLog "logs/your_own-access.log" common </VirtualHost>

mod_rewrite有关在同一台服务器上跨域的查询

我只使用mod_rewrite做友好的URL,但有一个来自客户端的查询。 他们想要一个网站内的网页,与域名www.domain2.com相关联。 该网站位于www.domain1.com。 他希望通过www.domain2.com访问以下网页,例如www.domain1.com/thispage/。 domain1和domain2指向相同的服务器。 一个简单的redirect不会削减它,因为他们想隐藏页面在不同的域下的事实。 我一直认为在可维护性/可用性方面做域重写是自杀的。 也许我错了。 也框架是不可能的。 谢谢 – 标记

Lighttpd mod_rewrite和SSL

我试图阻止search引擎通过SSL版本的网站进行爬取,以防止内容重复和经典化问题。 我发现以下伟大的文章: http : //www.seoworkers.com/seo-articles-tutorials/robots-and-https.html 问题是,我使用的lighttpd,似乎没有RewriteCond指令,限制只能重写到SSL。 任何人都可以build议,如果这可能在lighttpd,并给一个片段? 提前致谢!

在000webhost.com上安装Silverstripe(免费虚拟主机)

我想学习如何工作Silverstripe,所以我提取了tar文件到我的免费托pipe帐户。 然后,我去了install.php和编辑的权限,以满足在install.php中设置的要求,但我仍然从“networking服务器configuration”部分得到两个警告: 我不能告诉你正在运行什么Web服务器。 没有Apache我不知道是否启用了mod_rewrite。 我不知道是否mod_rewrite正在运行。 您可能需要自己configuration重写规则。 我看着phpinfo()和mod_rewrite似乎被安装。 我联系了虚拟主机,他们说这是做虚拟目录path,我应该添加'RewriteBase /'到我的.htaccess文件的顶部public_html目录。 但是我这样做,仍然有同样的问题。 install.php脚本说我可以安装它,即使有这些警告,但是当我按“安装”它只是刷新install.php页面。 它甚至不覆盖.htaccess文件。 000webhost.com说,他们已经成功地在他们的用户账户上安装银条纹没有太多的configuration,但我似乎无法find如何。 编辑:我设法进入下一页,但现在有另一个警告是停止安装: 友好的url无效。 这很可能是因为mod_rewrite没有在您的网站上正确configuration。 请在您的Apacheconfiguration中检查以下内容; 您可能需要让您的Web主机或服务器pipe理员为您执行此操作: * mod_rewrite已启用 * AllowOverride All设置为您的目录 我也从服务器得到这个错误信息: 警告:取消链接(mysite / _config.php)[function.unlink]:权限在701线上的/home/a2716553/public_html/install.php中被拒绝