Webboard

Pełna wersja: Przekierowania 301 w .htaccess - nie mogę przekierować podstron
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć! Problem polega na tym, że chcę przeprowadzić prace techniczne na stronie głównej mojego serwisu i chcę, żeby do czasu ich ukończenia, użytkownik był przenoszony z index.php na forum/index.html, ale za nic nie mogę napisać w .htaccess regułki, która by to dobrze robiła.
Kod:
RewriteRule ^index\.php$ forum/index.html [L,QSA,R=301]

Piszę z komórki, może nie działać.
Niestety, nie działa. Może mam coś w .htaccess, co przeszkadza w działaniu? Jakby co, podaję kod:
Kod:
SetEnv PHP_VER 5
# 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

#JavaScript
addType application/x-javascript .js

#Awaryjne przekierowanie indexu
RewriteRule ^index\.php$ forum/index.html [L,QSA,R=301]



A to mam w .htaccess z katalogu forum:

Kod:
# Google SEO będzie współpracować z search.php, aby podświetlić szukaną frazę:
# Dopilnuj, aby ta reguła była umieszczona JAKO PIERWSZA w pliku .htaccess!
RewriteRule ^([^&]*)&(.*)$ http://podziemieopowiadan.pl/forum/$1?$2 [L,QSA,R=301]

#Poprawa adresu z www na adres bez.
RewriteCond %{HTTP_HOST} ^www.podziemieopowiadan.pl(.*) [NC]
RewriteRule ^(.*)$ http://podziemieopowiadan.pl/forum/$1 [R=301,L]

# Google SEO Sitemap:
RewriteRule ^sitemap-([^./]+)\.xml$ misc.php?google_seo_sitemap=$1 [L,QSA,NC]

# Błędy 404 Google SEO:
ErrorDocument 404 /forum/misc.php?google_seo_error=404

Options -MultiViews +FollowSymlinks -Indexes

#
# If mod_security is enabled, attempt to disable it.
# - Note, this will work on the majority of hosts but on
#   MediaTemple, it is known to cause random Internal Server
#   errors. For MediaTemple, please remove the block below
#
<IfModule mod_security.c>
    # Turn off mod_security filtering.
    SecFilterEngine Off

    # The below probably isn't needed, but better safe than sorry.
    SecFilterScanPOST Off
</IfModule>

#
# MyBB "search engine friendly" URL rewrites
# - Note, for these to work with MyBB please make sure you have
#   the setting enabled in the Admin CP and you have this file
#   named .htaccess
#
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^index.html$ index.php?$1 [L,QSA]
    RewriteRule ^page-([0-9]+)\.html$ misc.php?page=$1 [L,QSA]
    RewriteRule ^forum-([0-9]+)\.html$ forumdisplay.php?fid=$1 [L,QSA]
    RewriteRule ^forum-([0-9]+)-page-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2 [L,QSA]
    RewriteRule ^thread-([0-9]+)\.html$ showthread.php?tid=$1 [L,QSA]
    RewriteRule ^thread-([0-9]+)-page-([0-9]+)\.html$ showthread.php?tid=$1&page=$2 [L,QSA]
    RewriteRule ^thread-([0-9]+)-lastpost\.html$ showthread.php?tid=$1&action=lastpost [L,QSA]
    RewriteRule ^thread-([0-9]+)-nextnewest\.html$ showthread.php?tid=$1&action=nextnewest [L,QSA]
    RewriteRule ^thread-([0-9]+)-nextoldest\.html$ showthread.php?tid=$1&action=nextoldest [L,QSA]
    RewriteRule ^thread-([0-9]+)-newpost\.html$ showthread.php?tid=$1&action=newpost [L,QSA]
    RewriteRule ^thread-([0-9]+)-post-([0-9]+)\.html$ showthread.php?tid=$1&pid=$2 [L,QSA]
    RewriteRule ^post-([0-9]+)\.html$ showthread.php?pid=$1 [L,QSA]
    RewriteRule ^announcement-([0-9]+)\.html$ announcements.php?aid=$1 [L,QSA]
    RewriteRule ^user-([0-9]+)\.html$ member.php?action=profile&uid=$1 [L,QSA]
    RewriteRule ^calendar-([0-9]+)\.html$ calendar.php?calendar=$1 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-year-([0-9]+)\.html$ calendar.php?action=yearview&calendar=$1&year=$2 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)\.html$ calendar.php?calendar=$1&year=$2&month=$3 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-year-([0-9]+)-month-([0-9]+)-day-([0-9]+)\.html$ calendar.php?action=dayview&calendar=$1&year=$2&month=$3&day=$4 [L,QSA]
    RewriteRule ^calendar-([0-9]+)-week-(n?[0-9]+)\.html$ calendar.php?action=weekview&calendar=$1&week=$2 [L,QSA]
    RewriteRule ^event-([0-9]+)\.html$ calendar.php?action=event&eid=$1 [L,QSA]    
    RewriteRule ^Forum-([^./]+)\.html$ forumdisplay.php?google_seo_forum=$1 [L,QSA,NC]
    RewriteRule ^Thread-([^./]+)\.html$ showthread.php?google_seo_thread=$1 [L,QSA,NC]
    RewriteRule ^Announcement-([^./]+)\.html$ announcements.php?google_seo_announcement=$1 [L,QSA,NC]
    RewriteRule ^User-([^./]+)\.html$ member.php?action=profile&google_seo_user=$1 [L,QSA,NC]
    RewriteRule ^Calendar-([^./]+)\.html$ calendar.php?google_seo_calendar=$1 [L,QSA,NC]
    RewriteRule ^Event-([^./]+)\.html$ calendar.php?action=event&google_seo_event=$1 [L,QSA,NC]
    RewriteRule ^search.html$ search.php?$1 [L,QSA]
    <IfModule mod_env.c>
        SetEnv SEO_SUPPORT 1
    </IfModule>
</IfModule>

#
# If Apache is compiled with built in mod_deflade/GZIP support
# then GZIP Javascript, CSS, HTML and XML so they're sent to
# the client faster.
#
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE application/javascript text/css text/html text/xml
</IfModule>
To nie może działać - parametr L określa, że jeżeli wzorzec jest dopasowany, to przerywa dalsze przepisywanie. Tutaj natomiast sprawę załatwiają wpisy Wordpressa, bo one powodują, że zawsze następuje szybsze zakończenie przepisywania.

Twój htaccess na serwisie powinien wyglądać tak:

Kod:
SetEnv PHP_VER 5
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Awaryjne przekierowanie indexu
RewriteRule ^index\.php$ forum/index.html [L,QSA]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#JavaScript
addType application/x-javascript .js

Jeżeli to tylko tymczasowa zmiana, to wrzucanie R=301 stanowi błąd, zależy od przeznaczenia.
Hehe. Działa, ale po przekierowaniu, ładuje obrazki z folderu głównego, a nie z forum, więc się sypie. Zatem chyba lepszym rozwiązaniem będzie po prostu zamienić nazwę index.php na index2.php, a jako index.php wrzucić stronę z przekierowaniem w headerze. Mimo wszystko dzięki ;)