У меня есть этот htaccess


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.test\.com$ [NC]
RewriteRule ^(.*)$ http://www.test.com/$1 [R=301,L]



RewriteRule ^home.html$ index__.php [L]
RewriteRule ^prodotti.html$ prodotti.php [L]
RewriteRule ^azienda.html$ azienda.php [L]
RewriteRule ^news.html$ news.php [L]
RewriteRule ^outlet.html$ outlet.php [L]
RewriteRule ^contatti.html$ contatti.php [L]

RewriteRule ^news-(.*).html$ news.php?id=$1 [L]

RewriteRule ^arr.html$ prodotti-cat.php?cat=a [L]
RewriteRule ^sed.html$ prodotti-cat.php?cat=s [L]
RewriteRule ^par.html$ prodotti-cat.php?cat=p [L]
RewriteRule ^cont.html$ prodotti-cat.php?cat=c [L]
RewriteRule ^comp.html$ prodotti-cat.php?cat=co [L]

RewriteRule ^outlet/([a-zA-Z0-9_-]+).html$ outlet-dett.php?prd=$1 [L]

RewriteRule ^(.*)/(.*)/$ prodotti-cat.php?cat=$1&f=$2 [L]
RewriteRule ^(.*)/(.*).html$ prodotti-dett.php?cat=$1&prd=$2 [L]

Если я напишу в своем браузере http://www.test.it/outlet/test-2 .html я получаю НЕ НАЙДЕН... Почему??? Помощь!!!

0
Ste 10 Мар 2011 в 17:31
Каков переписанный адрес вашего примера? Пожалуйста, уточните, что вы собираетесь получить из каких данных. спасибо
 – 
M'vy
10 Мар 2011 в 17:33
1
RewriteRule ^outlet/([a-zA-Z0-9_-]+).html$outlet-dett.php?prd=$1 [L]
 – 
Ste
10 Мар 2011 в 17:35

1 ответ

http://www.test.it/outlet/test-2.html будет переведено в

http://www.test.it/outlet-dett.php?prd=test-2

Проверьте, существует ли этот файл.

Все, что следует за символом ? и включает его, называется строкой запроса. Вот как это делается:

  • Сервер загружает outlet-dett.php
  • и передает ему переменную с именем prd со значением test-2.
  • затем PHP-скрипт в outlet-dett.php отображает данные в зависимости от значения prd.

$1 в вашем правиле перезаписи называется обратной ссылкой. Он ссылается на совпадение между первой скобкой в ​​вашем регулярном выражении.

0
vbence 10 Мар 2011 в 17:47
Здесь мы говорим об том же самом файле. Я отредактировал свой ответ с результатами.
 – 
vbence
10 Мар 2011 в 17:45
У вас либо нет файла с именем outlet-dett.php в вашем каталоге, либо http://www.test.it/outlet-dett.php?prd=test-2 должен дать вам ответ. - Третье решение состоит в том, что ваш скрипт PHP отвечает 404 (не найден), потому что в вашей базе данных нет продукта с названием test-2.
 – 
vbence
10 Мар 2011 в 17:50
У меня есть этот файл, и он работает! Поверьте мне. если я изменю htaccess с помощью: RewriteRule ^a/([a-zA-Z0-9_-]+).html$outlet-dett.php?prd=$1[L] это сработает!!!! Зачем???
 – 
Ste
10 Мар 2011 в 17:57
Включите журнал перезаписи с помощью RewriteLog path/to/logfile и установите уровень с помощью RewriteLogLevel 2. Если вы не найдете ответ, вы можете перейти на более высокий уровень журнала.
 – 
vbence
10 Мар 2011 в 22:23