2012-05-19 8 views
1

Нижепеременный мод не работает. Например, с URL-адресом, например http://www.mywebsite.com/category/general .. Я получаю ошибку 404.Mod rewrite 404 error

RewriteEngine On 
RewriteBase/
RewriteRule ^category/([A-Za-z0-9-]+)&type=([A-Za-z0-9-]+)&r=([A-Za-z0-9-]+)&g=([A-Za-z0-9-]+)&page=([A-Za-z0-9-]+)/?$ /category.php?c=$1&type=$2&r=$3&g=$4&page=$5 [L] 

Если я использую мод рерайт ниже он работает, не должно там быть лучше, вместо того, чтобы напечатать все комбинации.

RewriteRule ^category/([A-Za-z0-9-]+)/?$ /category.php?c=$1 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&type=([A-Za-z0-9-]+)/?$ /category.php?c=$1&type=$2 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&page=([A-Za-z0-9-]+)/?$ /category.php?c=$1&page=$2 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&type=([A-Za-z0-9-]+)&page=([A-Za-z0-9-]+)/?$ /category.php?c=$1&type=$2&page=$3 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&r=([A-Za-z0-9-]+)/?$ /category.php?c=$1&r=$2 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&type=([A-Za-z0-9-]+)&r=([A-Za-z0-9-]+)/?$ /category.php?c=$1&type$2&r=$3 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&r=([A-Za-z0-9-]+)&page=([A-Za-z0-9-]+)/?$ /category.php?c=$1&r=$2&page=$3 [L] 
RewriteRule ^category/([A-Za-z0-9-]+)&type=([A-Za-z0-9-]+)&r=([A-Za-z0-9-]+)&g=([A-Za-z0-9-]+)&page=([A-Za-z0-9-]+)/?$ /category.php?c=$1&type=$2&r=$3&g=$4&page=$5 [L] 

ответ

1

Ваш первый набор правил требует, чтобы каждый аргумент существовал, поэтому он никогда не запускается на вашем примере URL. Второй набор правил, похоже, работает над вашим примером, потому что ваше первое правило обрабатывает «просто имеет слово после« категории/».

Если вы хотите, одно правило, попробуйте:

RewriteEngine On 
RewriteBase/
RewriteRule ^category/([A-Za-z0-9-]+)(&type=([A-Za-z0-9-]+))?(&r=([A-Za-z0-9-]+))?(&g=([A-Za-z0-9-]+))?(&page=([A-Za-z0-9-]+))?/?$ /category.php?c=$1&type=$3&r=$5&g=$7&page=$9 [L] 

Или, так как аргументы, все появляются на карту непосредственно:

RewriteEngine On 
RewriteBase/
RewriteRule ^category/([A-Za-z0-9-]+)(&type=[A-Za-z0-9-]+)?(&r=[A-Za-z0-9-]+)?(&g=[A-Za-z0-9-]+)?(&page=[A-Za-z0-9-]+)?/?$ /category.php?c=$1&type=$2&r=$3&g=$4&page=$5 [L] 

Оба эти предположить, что а) вы всегда будете иметь первый бит после «category /» и b) остальные параметры можно смешивать и сопоставлять, но всегда будут в одном порядке. Второй вариант лучше, потому что это означает, что вы можете продлить его в будущем, если хотите, - у первого из них закончились обратные ссылки (он использует 9 долларов США).