2009-05-13 2 views
0

Это мой текущий .htaccessMod Rewrite - Простой вопрос

Options +FollowSymLinks 
DirectoryIndex index.php 

RewriteEngine On 
RewriteBase /product/ 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.php$ ./$1/ [R=301,L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^contact/?$ ./contact.php [QSA,L] 

Все работает отлично теперь ..

  • /продукт/контакт возвращение к/продукта/контакт/
  • /продукт /contact.php вернуться к/product/contact/

Вопрос ..

  • Как сделать все мои .php будет/контакт// помощь// Вопросы/
  • Теперь я должен добавить contact.php help.php faq.php к HTAccess
  • Я попытался добавить RewriteRule^(. *)/$ $ 1.php [QSA, L], но это будет цикл возврата.

Позвольте мне знать, как это исправить;)

+0

Может быть, это только потому, что вы пытались решить эту проблему уже, но в нижней строке вашего .htaccess уже перенаправляет/продукт/помощь/в /product/help.php, что нарочно? –

ответ

0

к сожалению, сделать это в ваших заявлениях перезаписи будет сделать бесконечный цикл, так как Apache будет пытаться переписать help/ в help.php, а затем help.php к help/ и т.д. и т.п.

Если это действительно необходимо, сделайте это в вашей заявке (Например, в PHP):

<?php 
// The (\?.*)? so it "ignores" query strings 
if (preg_match('/\.php(\?.*)?$/', $_SERVER['REQUEST_URI'])) { 
    header('Location: ' . str_replace('.php', '/', $_SERVER['REQUEST_URI'])); 
    exit; 
} 
+0

да .. таким образом можно сделать – wow

+0

Escape the dot в регулярном выражении. В противном случае вы получите бесконечный цикл, если путь URI заканчивается на 'php', как в' foo-php' или 'bar/php'. – Gumbo

+0

Ницца поймать Гумбо, исправил ответ. Благодаря! –

0

Возможно ли, что эта линия в обратном направлении?

RewriteRule ^(.*)/$ $1.php [L,QSA] 

Как я понимаю, это переписывает domain.com/product/help/ к domain.com/product/help.php. Попробуйте

RewriteRule ^(.*).php $1/ [L,QSA] 

Это следует переписать domain.com/product/help.php в domain.com/product/help/ и domain.com/foobar/baz.php к domain.com/foobar/baz/ и т.д.

+0

не работает :) спасибо за вход – wow