我已经在Apache上安装了rewrite_module并修改了php.ini 。 我创build了rewrite.php和.htaccess文件,但它不工作。 我的文件系统文件夹如: /var/www/html /var/www/html/test /var/www/html/test/.htaccess /var/www/html/test/rewrite.php /var/www/html/.htaccess的内容是: $ cat /var/www/html/test/.htaccess RewriteEngine On RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L] /var/www/html/rewrite.php $ cat /var/www/html/test/rewrite.php <html> <h2 align=center> <?php // mod_rewrite Test Page // Copyright 2006 Webune.com if($_GET['link']==1){echo"You are not using mod_rewrite";} elseif($_GET['link']==2){echo"Congratulations!! You are using Apache mod_rewrite";} else{echo"Linux Apache mod_rewrte Test Tutorial";} ?> </h2> <hr> <head> <title>How […]
我试图在Apache 2.2 VirtualHost声明中使用mod_rewrite将所有请求redirect到我的域到另一个域。 有一个例外 – 我想所有的请求/audiopath不被redirect。 我已经写了一个RewriteCond和RewriteRule来做到这一点,但它不是很正确,我不明白为什么。 正则expression式包含对string“/ audio”的负面预测,但由于某些原因,这不匹配。 定义如下: RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC] RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301] 如果我将RewriteCond更改为: RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC] (即把正斜杠放在负向视图部分之外),那么它就可以工作,但是这样做的缺点就是没有斜线的mydomain.net的请求将不会被redirect。 任何人都可以指出我做错了什么? (注意:上面的RewriteRule位域中的尖括号正在被StackOverflow.com添加 – 它们在实际的代码中不存在!) 这是规则: <VirtualHost *:80> ServerAdmin me@mydomain.net DocumentRoot "/var/www/mydomain.net/htdocs" ServerName www.mydomain.net ServerAlias mydomain.net RewriteEngine on RewriteCond {REQUEST_URI} !^/audio RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301] RewriteLog logs/mod_rewrite_log RewriteLogLevel 3 ErrorLog […]
我们有一些非常基本的mod_rewrite规则: RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L] mod_rewrite似乎做了它的工作,如果用户正在访问: something.swf?param=value ,它被正确地redirect到http://www.newdomain.com/something.swf?param=value 问题在于这种情况: www.olddomain.com/something.swf?param=URL_ENCODED_VALUE 最后发生的是mod_rewrite将其自身重新编码查询string参数 所以用户最终得到的是: www.olddomain.com/something.swf?param=URL_ENCODED_VALUE redirect到 www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE 所以我们结束了一个双重urlencoded值。 boourns! 虽然我明白我们可以做一个\?(.*) … ?$1规则,我想一定有办法告诉mod_rewrite不urlencode查询string参数…我们想避免使用2条规则,因为有效的path是: something.swf (no query string) 和 something.swf?someparams… 所以是的,理想情况下…只是告诉mod_rewrite:请不要查询string参数的urlencoding …只是通过R=302直接passthru到新的URL。
我有一个PHP项目,我需要在URL的path中发送哈希字符(#)。 ( http://www.example.com/parameter#23/parameter#67/index.php )我以为urlencode会允许,将散列转换为%23 但是现在我看到,甚至urlencoded哈希都强制浏览器将所有东西都作为URL片段(或查询)来处理。 有没有办法通过一个哈希,或者我需要做urlencode之前的字符replace? 编辑添加(2017年9月19日): 原来我是在问错误的问题。 我的问题不是在path中使用散列字符(对其进行编码),而是使用mod_rewrite将其转换为查询string。 我没能在RewriteRule中重新编码它。 我将编辑标题以匹配。 这是我正在使用的重写规则: RewriteEngine On # convert path strings into query strings RewriteRule "^(.*)/(.*)/hashtags.php" /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L] 一旦我添加了B标签,它正常工作: RewriteEngine On # convert path strings into query strings RewriteRule "^(.*)/(.*)/hashtags.php" /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B]
这是情景: 根文件夹中有一个index.php文件 一些文件包含在index.php文件夹中。 1个其他文件( submit.php )位于表单提交操作的根文件夹中。 我想通过htaccess限制直接用户访问includes文件夹中的文件。 也为submit.php 。 但包括将为index.php文件工作。 就像,如果用户键入www.domain.com/includes/somepage.php ,它会限制它(可能会redirect到一个错误页面)。
我的web应用程序结构是: /var/www/myapp/ – www/ – index.php – css.php – .htaccess 虚拟主机configuration为: <VirtualHost *:80> ServerName www.example.org DocumentRoot /var/www/myapp/www DirectoryIndex index.php index.html <Directory /var/www/myapp/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 在/var/www/myapp/www/.htaccess中有: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule css css.php [L,NC] RewriteRule .* index.php </IfModule> 现在,如果我打电话给www.example.org,我被正确地redirect到index.php,但是如果我打电话给www.example.org/css,我仍然会被redirect到index.php。 如果我放下“RewriteRule。* index.php”这一行,然后调用www.example.org/css,我将被正确地redirect到css.php。 怎么了? 非常感谢 […]
我是新的.htaccess,所以这可能是一个虚拟的问题:)。 我原来的链接是: http://example.com/CareerDays/index.php?u_type=admin 我试图让它看起来像这样: http://example.com/v/admin 整个代码如下所示: RewriteEngine On RewriteRule ^v/([^/]*)$ /CareerDays/index.php?u_type=$1 [L] 而我总是得到“ 500内部服务器错误 ”:( 有什么build议么 ?
我试图让modrewrite规则跳过目录vip 。 我已经尝试了一些东西,你可以看到下面,但无济于事。 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #RewriteRule ^vip$ – [PT] RewriteRule ^vip/.$ – [PT] #RewriteCond %{REQUEST_URI} !/vip RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 我如何得到modrewrite完全忽略/vip/目录,以便所有请求直接传递到文件夹? 更新: 作为清晰点: 它托pipe在Dreamhost上 这些文件夹在一个wordpress目录中 / vip /文件夹包含一个webdav .htaccess等(虽然我不认为这很重要
htaccess删除我的网站的文件的.php扩展名。 RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA] 现在,如果我去我的网站 www.mysite.com/home 工作正常,它redirect到home.php但url仍然友好。 但是,如果我写这个url: www.mysite.com/home.php home.php服务,并且URL不友好。 我怎样才能避免这种行为? 我想如果用户写www.mysite.com/home.php,显示在URL栏中的URL是www.mysite.com/home
我想要一个mod_rewrite规则集,所以我可以引用一个没有.php扩展名的页面,但是重写了包含php扩展名。 这将在1和1服务器上运行。 有没有什么好的参考资料,让我可以更多地了解自己?