2012-06-08 2 views
0

Отказ от ответственности: Да, я много искал. Да, я читал форумы. Да, я пробовал решить это сам в течение 30 минут, и его просто не работает, поэтому я ищу помощь, пожалуйста.Htaccess не работает

Простое правило перезаписи htaccess. Это то, что я использую для правила:

RewriteRule ^downloads/([0-9])/$ /downloads?ID=$1 [NC,L] 

По существу я ищу что

www.url.com/downloads/1 запускает запрос /downloads?ID=1

По какой-то причине я постоянно просто получаю ошибку «ничего не найдено» на моем сайте. Запуск сайта wordpress. Остальная часть htaccess находится ниже

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s .php 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

# END WordPress 

redirect 301 "/report2012/trends_2012/" "/2012-swanepoel-trends-report" 
redirect 301 "/report2011/trends_2011/" "/2011-swanepoel-trends-report" 
redirect 301 "/report2010/trends_2010/" "/swanepoel-trends-report" 
redirect 301 "/report2009/trends_2009/" "/swanepoel-trends-report" 
redirect 301 "/social_media/" "/social-media-report" 
redirect 301 "/speaking-engagements/" "/trends-keynote" 

RewriteRule ^item/([0-9])/$ /downloads?ID=$1 [NC,L] 

Пожалуйста, помогите - я не уверен, почему он не работает. Спасибо.

+1

30 минут не так долго :), но он не работает с последней строкой до 'RewriteRule. /index.php [L] ', потому что он имеет флаг' last'. Вы должны поместить свое правило _before_ правила wordpress – giorgio

+0

После перенаправления на '/ downloads? ID = 1',' .htaccess' будет загружен снова и попытается сопоставить новый URL. Он будет соответствовать «RewriteRule». /index.php [L] ', и вам нужно остановить его, изменив значение« RewriteRule^index \ .php $ - [L] »на« RewriteRule^(index \ .php | downloads) $ - [L] '. @giorgio также правильно относится к проблеме приоритета. –

ответ

1

Я поставил код выше правил WP. Я также поставил строку, чтобы предотвратить WP-форму, пытающуюся интерпретировать эти URL-адреса загрузки.

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s .php 


# download links 
RewriteRule ^downloads/([0-9])/$ /downloads?ID=$1 [L] 
RewriteRule ^downloads - [L] 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

# END WordPress 

redirect 301 "/report2012/trends_2012/" "/2012-swanepoel-trends-report" 
redirect 301 "/report2011/trends_2011/" "/2011-swanepoel-trends-report" 
redirect 301 "/report2010/trends_2010/" "/swanepoel-trends-report" 
redirect 301 "/report2009/trends_2009/" "/swanepoel-trends-report" 
redirect 301 "/social_media/" "/social-media-report" 
redirect 301 "/speaking-engagements/" "/trends-keynote" 
+0

спасибо, что это отлично поработало, хотя мне пришлось удалить вторую строку: RewriteRule^downloads - [L], чтобы она работала. – user1339617

+0

Я вижу, что вы пытались сделать с загрузками^[L], однако, если это в моем файле htaccess, предыдущая строка не работает. Любые мысли о том, почему? Я попытался адаптировать его к более новой версии, и я вижу, что Wordpress любит пытаться интерпретировать мои URL-адреса и беспорядок. – user1339617

+0

попробуйте использовать 'RewriteRule^скачивает $ - [L]' вместо – Gerben

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