Articles of mod rewrite

带有Querystring的Apache RewriteRule

我有这样的重写: RewriteRule /products.php?id=123&t=12345 /product/New-Product-Name 如果我打开RewriteLog ging,然后翻转关卡,就会得到以下结果: applying pattern '/products.php?id=123&t=12345' to uri '/products.php' 为什么不查看完整的uri(包括查询string)?

.htaccess重写规则

可能重复: 一切你想知道Mod_Rewrite规则,但不敢问? 以下代码添加www。 到任何不以它开头的url: RewriteCond %{HTTPS} !on [OR] RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ^(www\.)?(.+) RewriteRule ^ https://www.%2%{REQUEST_URI} [L,R=301] 不过,我希望它只有当url的格式是这样的: something.com 如果url是这样的: something.something.com 我不希望添加www的规则。 我如何改变这个?

如何将所有请求redirect到根文件夹中的文件以指向另一个文件夹?

我已经把我所有的文件从我的网站的根目录移动到一个子文件夹,我想做一个Apacheredirect指向这些文件,而不会影响我的网站中的其他子文件夹。 例如 /index.html – redirect到 – > /subfolder1/index.html /file1.html – redirect到 – > /subfolder1/index.html /subfolder2/index.html – 没有redirect 任何人都可以帮我用我需要写的redirect规则。 谢谢,

使用mod_rewrite将静态文件replace为WordPress页面的最佳方法

情况如下:我有一个旧的WordPress安装,我想存档为静态文件,但我也想保留旧的URL。 我已经使用wget创build了静态存档,并对文件名和链接进行了整理。 现在我想configurationApache来拦截对旧dynamicURL的请求,并将其replace为新的静态URL,例如: http://www.example.org/log/?p=1234 要么 http://www.example.org/log/index.php?p=1234 应该redirect到 http://www.example.org/log/archives/1234.html 我已经尝试将以下内容添加到example.org的VirtualHostconfiguration中,但没有任何效果 – 我只是获取PHP页面。 RewriteCond %{REQUEST_URI} /log/ RewriteCond %{QUERY_STRING} p=([^&;]*) RewriteRule ^/$ http://%{SERVER_NAME}/log/archives/%1.html [R,L] 我已经启用了日志loggingfunction,并且可以看到其他规则正在应用的外观,但不是这个。 对于%{REQUEST_URI}匹配模式,我的其他猜测似乎也没有任何影响( log , log/ %{REQUEST_URI} )。 我是mod_rewrite新手,这主要是货物的崇拜,所以我很确定我错了。 任何人都知道我应该在这里做什么?

RewriteRule在htaccess子目录中

Windows服务器,运行Apache。 在我的Apache conf中,我有一个站点的根的AllowOverride None ,然后我有一个子目录设置为AllowOverride All : <Directory /> AllowOverride None </Directory> <Directory "/safe/"> AllowOverride All </Directory> 但是,当我尝试在子目录的.htaccess文件中设置一个重写规则时,什么也没有发生,我只是得到一个404页面未find错误。 例: RewriteEngine On RewriteRule (.*) /blah?test=$1 [R=302,NC,NE,L] 通过Apache conf重写URL可以正常工作。 我不明白为什么这个规则会被忽略。 我不想在conf中重写URL,因为在这种情况下,我可能需要不断地改变redirect,并且不希望在每次更改时重新加载服务器。 我也不想通过在站点范围内启用.htaccess文件来影响服务器的性能,只是在我需要的子目录中。

mod_rewrite捕获子域名

我想写一个重写scheme,以便: user1.example.net将redirect到example.net/user/user1 user2.example.net将redirect到example.net/user/user2 这是我在我的.htaccess代码。 但它总是redirect到example.net 。 RewriteCond %{http_host} ^[^.]+\.example\.net [NC] RewriteRule ^([^.]+)\.example\.net(.*) http://example.net/user/$1 [R=301,L] 有人能告诉我我做错了什么吗?

mod_rewrite www.site.com/dir/ – > www.site.com/dir/2009/

我在重写时遇到了麻烦。 我从来没有真正使用过mod_rewrite,没有太多的正则expression式的经验。 任何帮助表示赞赏! <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine on #prevent nested looping RewriteCond %{ENV:REDIRECT_STATUS} ^$ #re-route incoming requests RewriteRule ^(.*)$ %{REQUEST_URI}2009/$1 [L,NE] </IfModule> 这部分工作, http://www.site.com/dir/被路由到http://www.site.com/dir/2009/,但像http://www.site.com/dir/css /theme.css失败。 我希望重写所有到父目录的请求到2009子目录,但我一直遇到无限循环和服务器错误消息。 我还没有find有用的例子。 我想这将是一个共同的改写… 提前致谢!

Apache忽略RewriteCond和RewriteRule

我要疯了 Apache完全忽略了RewriteCond和RewriteRule 。 我期望这个错误,因为RewriteEngine尚未设置为On 。 我有一堆其他RewriteCond和RewriteRule线,工作正常,当我检查重写日志(我已经启用),它显示这两个被跳过。 我修剪了一切,以validation它没有造成这个问题,果然,Apache愉快地进行这个configuration的错误: DocumentRoot /var/sites/public <Directory /var/sites/public> AllowOverride None SetEnv APPLICATION_ENV production RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.example.com/$1 [L,R] Order allow,deny allow from all </Directory> 我敢肯定,这里有一些明显的错误,我瞎了眼,盯着它太久了。 任何帮助,将不胜感激。 注意:我没有这个在Vhost中。 configuration中没有任何Vhosts。 我已经删除了RewriteCond,它仍然不会抛出任何错误。 我也用RewriteEngine On试了一下。

Apache中的多个Svn仓库

我有一个设置与Apache和颠覆 在我的Apacheconfiguration <Location /svn> DAV svn SVNParentPath c:/svn </Location> 现在我有多个存储库 a a_b a_c a_b_c a_b_d b 我想把它们映射成 a/svn a/b/svn a/c/svn a/b/c/svn a/b/d/svn b/svn 要做到这一点,而不添加指令,并重新启动Apache我要做这个规则 RewriteEngine On RewriteCond $1 !=svn RewriteCond $2 !=svn RewriteRule ^/([^/]+)/(.*?)/svn/(.*)$ /$1_$2/svn/$3 [N] RewriteRule ^/([^/]+)/svn/(.*)$ /svn/$1/$2 [L,PT] 这样我重写他们 /svn/a /svn/a_b /svn/a_c /svn/a_b_c /svn/a_b_d /svn/b 客户的目标是没有这种情况的概念 当一个文件夹没有跟踪斜线时,mod dav会返回一个redirect到文件夹的尾部的斜线,暴露我的内部URL。 我可以重写传出的url吗?

RedirectPermanent vs RewriteRule

我目前有一个perm_redirects.conf文件被包含到我的Apacheconfiguration堆栈中,我有格式的行 RedirectPermanent /old/url/path /new/url/path 它看起来像我需要使用一个绝对的URL的新path,例如: http://example.com/new/url/path : http://example.com/new/url/path 。 在日志中,我收到“不完整的redirect目标/新/ url /path已更正为http://example.com/new/url/path” 。 (转述)。 在RewriteRule的2.2文档中,在底部,他们显示以下是一个有效的redirect,只有url-paths,而不是redirect右侧的abs URL: RewriteRule ^/old/url/path(.*) /new/url/path$1 [R] 但我似乎无法获得该格式来复制RedirectPermanent版本的function。 这可能吗?