Я не могу понять, что здесь происходит ... Я использую WAMP = Windows Apache MySQL в пакете PHP. У меня 2 сайта работают локально, буквально копируют друг друга с самого начала с модификацией. Однако на одном /forum/
пойду загружать мой /forum/index.php
а с другой стороны, он просто перейдет к основному index.php в соответствии с другими правилами перенаправления. Этот .htaccess перезаписывает все мои URL-адреса, чтобы они указывали на конфигурацию моего сайта.
Что-то здесь происходит, кроме .htaccess, я не уверен, где искать.
RewriteEngine on
RewriteCond %{REQUEST_URI} ^[^.]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301,L]
#Don't break valid URL's!
RewriteRule ^forum/(.+)$ forum/$1 [L]
RewriteRule ^image/(.+)$ image/$1 [L]
RewriteRule ^feed/(.+)$ feed/$1 [L]
RewriteRule ^sitemap/(.+)$ sitemap/$1 [L]
RewriteRule ^cron/(.+)$ cron/$1 [L]
RewriteRule ^lib/(.+)$ lib/$1 [L] [NS]
RewriteRule ^index.php$ index.php?%{QUERY_STRING} [L] [NS]
#But fix the ones that need fixing
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&tiersec=$4&quadsec=$5&act=$6&%{QUERY_STRING} [L,NS]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&tiersec=$4&act=$5&%{QUERY_STRING} [L,NS]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&act=$4&%{QUERY_STRING} [L,NS]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&act=$3&%{QUERY_STRING} [L,NS]
RewriteRule ^([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&act=$2&%{QUERY_STRING} [L,NS]
RewriteRule ^([^/]+?)/?$ /index.php?cmd=$1&%{QUERY_STRING} [L,NS]
Согласен с ответом Ториана, но я также могу немного поправить ваши переписывания:
#But fix the ones that need fixing
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&tiersec=$4&quadsec=$5&act=$6 [L,NS,QSA]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&tiersec=$4&act=$5 [L,NS,QSA]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&subsec=$3&act=$4 [L,NS,QSA]
RewriteRule ^([^/]+?)/([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&sec=$2&act=$3 [L,NS,QSA]
RewriteRule ^([^/]+?)/([^/]+?)/?$ /index.php?cmd=$1&act=$2 [L,NS,QSA]
RewriteRule ^([^/]+?)/?$ /index.php?cmd=$1 [L,NS,QSA]
Непонятно, какова цель знаков «?», Которые не идут после последнего «/», поэтому я оставил их. Но подозреваю, что:
^([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/([^/]+?)/?$
можно заменить на:
^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$
ничего не меняя о поведении регулярного выражения.
Вполне возможно, что ваша проблема не обязательно в .htaccess, а в определении виртуального хоста. Убедитесь, что вы правильно настроили директивы AllowOverride и option для каталога htaccess (для mod_rewrite требуется AllowOverride FileInfo, и Параметры FollowSymLinks):
<Directory /your/path/to/forum>
AllowOverride FileInfo
Options FollowSymLinks
</Directory>