Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用rewriterule重定向到同一文件夹中的php文件?_Php_.htaccess_Generics_Mod Rewrite - Fatal编程技术网

如何使用rewriterule重定向到同一文件夹中的php文件?

如何使用rewriterule重定向到同一文件夹中的php文件?,php,.htaccess,generics,mod-rewrite,Php,.htaccess,Generics,Mod Rewrite,我想接受对/somefolder/style.css的请求,并使用/somefolder/program.php处理这些请求 因此,我在.htaccess文件中添加了以下内容: rewriteengine on rewriterule ^style.css$ program.php?css=1 [R=302,L] 重新启动发动机 重写规则^style.css$program.php?css=1[R=302,L] 结果是,服务器没有重定向到/somefolder/program.php,而是尝试重

我想接受对/somefolder/style.css的请求,并使用/somefolder/program.php处理这些请求

因此,我在.htaccess文件中添加了以下内容:

rewriteengine on rewriterule ^style.css$ program.php?css=1 [R=302,L] 重新启动发动机 重写规则^style.css$program.php?css=1[R=302,L] 结果是,服务器没有重定向到/somefolder/program.php,而是尝试重定向到:

/var/www/html/somefolder/program.php?css=1 /var/www/html/somefolder/program.php?css=1 如何摆脱重定向中的/var/www/html/?我认为,由于我刚刚在.htaccess中输入了program.php,它将默认为同一个文件夹

由于这是一个我将在许多地方使用的通用脚本,我希望避免使用rewritebase来指定我所在的文件夹--.htaccess必须在任何文件夹中工作,而不必进行修改。

将R标志去掉,您将得到一个内部重定向:

RewriteRule ^style\.css$ program.php?css=1 [L]
否则,请指定要重定向到外部的完整URL路径:

RewriteRule ^style\.css$ /program.php?css=1 [R=302,L]
或对于任意文件夹:

RewriteCond %{REQUEST_URI} (.*)/style\.css$
RewriteRule ^style\.css$ %1/program.php?css=1 [R=302,L]
离开R标志,您将得到一个内部重定向:

RewriteRule ^style\.css$ program.php?css=1 [L]
否则,请指定要重定向到外部的完整URL路径:

RewriteRule ^style\.css$ /program.php?css=1 [R=302,L]
或对于任意文件夹:

RewriteCond %{REQUEST_URI} (.*)/style\.css$
RewriteRule ^style\.css$ %1/program.php?css=1 [R=302,L]

我认为问题在于您缺少重写基语句

另外,我会将.htaccess文件放在站点的根目录中。这样,您就不必将.htacess文件复制到您创建的每个新目录中。如果要更改php文件的名称,该怎么办?您必须更改每个.htaccess文件

这就是我如何使用通用规则将www.mydomain.com/orange/style.css重定向到www.mydomain.com/orange/program.php?css=1的方法:

RewriteEngine On
RewriteBase /
RewriteRule  ^(.*)/style\.css$ $1/program.php?css=1 [L]

我认为问题在于您缺少重写基语句

另外,我会将.htaccess文件放在站点的根目录中。这样,您就不必将.htacess文件复制到您创建的每个新目录中。如果要更改php文件的名称,该怎么办?您必须更改每个.htaccess文件

这就是我如何使用通用规则将www.mydomain.com/orange/style.css重定向到www.mydomain.com/orange/program.php?css=1的方法:

RewriteEngine On
RewriteBase /
RewriteRule  ^(.*)/style\.css$ $1/program.php?css=1 [L]

jeph perro,OP说,“我希望避免使用rewritebase来指定我所在的文件夹,.htaccess必须在任何文件夹中工作而不被修改。”我不同意这种方法,并解释了我的理由。为什么到处都有多个.htaccess文件?只要在根目录下有一个,然后从那里控制一切。原因是在我将要使用它的一些站点中,已经有一个htaccess文件,它以不同的方式处理站点其他部分的重写。在这种情况下,我需要一个模块化的解决方案,我可以在不影响现有重定向的情况下进入现有环境。我同意在所有条件相同的情况下,最好使用一个htaccess文件。jeph perro,OP说,“我希望避免使用rewritebase指定我所在的文件夹,.htaccess必须在任何文件夹中工作而不被修改。”我不同意这种方法,并解释了我的理由。为什么到处都有多个.htaccess文件?只要在根目录下有一个,然后从那里控制一切。原因是在我将要使用它的一些站点中,已经有一个htaccess文件,它以不同的方式处理站点其他部分的重写。在这种情况下,我需要一个模块化的解决方案,我可以在不影响现有重定向的情况下进入现有环境。我同意在所有条件相同的情况下,最好只有一个htaccess文件。太好了!我不知道R有那种效果。太好了!我不知道R有那种效果。