2014-11-04 2 views
1

У меня есть файл htaccess, который установлен и запущен на реальном сервере. Все работает нормально, но я должен добавить к нему определенные URL-адреса. Конкретные перенаправления были настроены в файле IIS web.config. Пример:URL-адреса перенаправления в htaccess

<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 файла. Любые мысли о том, что мне не хватает?

ответ

0

Ваше регулярное выражение в 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] 
+0

Этот синтаксис RewriteRule выбрасывает 500 ошибок. Я даже не могу загрузить домашнюю страницу. –

+0

Извините, в первом правиле была добавлена ​​дополнительная скобка. Теперь исправлено, повторите попытку. – anubhava

Смежные вопросы