Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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
Php htaccess中的URL重定向_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Php htaccess中的URL重定向

Php htaccess中的URL重定向,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我有一个htaccess文件,该文件已设置并在实时服务器上运行。一切都运作良好,但我必须添加一些具体的网址重定向到它。特定重定向已在IIS web.config文件中设置。例如: <rule name="URL re-direct" stopProcessing="true"> <match url="^program_consumer((\.cfm)|(\.php)|()+)((\?.*)|())$" /> <conditions logica

我有一个htaccess文件,该文件已设置并在实时服务器上运行。一切都运作良好,但我必须添加一些具体的网址重定向到它。特定重定向已在IIS web.config文件中设置。例如:

<rule name="URL re-direct" stopProcessing="true">
     <match url="^program_consumer((\.cfm)|(\.php)|()+)((\?.*)|())$" />
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
     <action type="Redirect" url="site_programs{R:7}" />
 </rule>

显然,program_consumer不是一个存在于根文档目录中任何地方的文件,但是site_程序确实存在,并且作为一个无扩展名的PHP文件使用。关于我遗漏了什么有什么想法吗?

您在
重写规则
中的正则表达式似乎有问题,需要放在内部重写规则之前:

AddDefaultCharset OFF
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^(program_consumer\.(?:cfm|php))$ /site_programs/$1 [L,R=301,NC,NE]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

重写规则语法会抛出500个错误。我甚至无法加载主页。很抱歉,第一条规则中有一个额外的括号。现在已修复,请重试。
AddDefaultCharset OFF
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^(program_consumer\.(?:cfm|php))$ /site_programs/$1 [L,R=301,NC,NE]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]