簡體   English   中英

htaccess中的URL重定向

[英]URL redirects in htaccess

我有一個已設置並在實時服務器上運行的htaccess文件。 一切正常,但我必須向其中添加一些特定的URL重定向。 特定的重定向已在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>

我很難將其翻譯為mt htaccess文件。 我試過了:

AddDefaultCharset OFF
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

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

# Re-direct Non-file Non-directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([program_consumer]+)((\.cfm)|(\.php)|()+)((\?.*)|())$ http://{HTTP_HOST}/site_programs$1 [L,R=301]

顯然,program_consumer並不是根文檔目錄中任何位置的文件,但是site_programs確實存在,並且可以作為無擴展名的PHP文件使用。 對我想念的東西有什么想法嗎?

您在RewriteRule正則表達式似乎有問題,需要將其放在內部重寫規則之前:

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM