2013-09-22 4 views
0

Я отключил просмотр каталога в моем файле .htaccess, и недавно я изменил индексную страницу по умолчанию, которая работает. Но теперь, когда я просматриваю: domain.com/images/, это должно дать мне 403 запрещенную ошибку, но она просто идет на индексную страницу '/en/index.php' себя.403 не работает после изменения DirectoryIndex

#Turn rewrite engine on 
RewriteEngine on 

#Disable directory browsing 
Options -Indexes 

#Default index page 
DirectoryIndex /en/index.php 

ErrorDocument 404 /error.php 

#Add trailing slash 
RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*) /$1/ [R=301,L] 

#Remove trailing slash 
RewriteCond %{REQUEST_URI} !^/en/$ 
RewriteCond %{REQUEST_URI} !^/fr/$ 
RewriteCond %{REQUEST_URI} !^/images/$ 
RewriteCond %{REQUEST_URI} !^/includes/$ 
RewriteCond %{REQUEST_URI} !^/stylesheets/$ 
RewriteRule ^/$ /$1 [R=301,L] 

#Redirect non-www to www 
RewriteCond %{HTTP_HOST} \. 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L] 

#Add trailing slash 
RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*) /$1/ [R=301,L] 

#English 
RewriteRule ^what-is-minecraft/$ /en/what-is-minecraft.php [NC,L] 
RewriteRule ^getting-started/$ /en/getting-started.php [NC,L] 
RewriteRule ^mods/$ /en/mods.php [NC,L] 
RewriteRule ^best-mods/$ /en/best-mods.php [NC,L] 
RewriteRule ^terms-of-service/$ terms-of-service.php [NC,L] 
RewriteRule ^privacy-policy/$ privacy-policy.php [NC,L] 

#French 
RewriteRule ^fr/cest-quoi-minecraft/$ /fr/cest-quoi-minecraft.php [NC,L] 
RewriteRule ^fr/demarrage/$ /fr/demarrage.php [NC,L] 
RewriteRule ^fr/mods/$ /fr/mods.php [NC,L] 
RewriteRule ^fr/meilleurs-mods/$ /fr/meilleurs-mods.php [NC,L] 
RewriteRule ^fr/$ /fr/index.php [NC,L] 

Может кто-нибудь выяснить, в чем проблема?

EDIT: Отправленный мой полный код .htaccess.

ответ

1

С помощью этого кода вам не нужно будет удалять конечную косую черту, поскольку она не добавляется к перенаправлению файлов php, и вам не нужно беспокоиться о существующих файлах или папках, так как они не будут перезаписаны.

Options +FollowSymLinks -MultiViews -Indexes 

RewriteEngine On 
RewriteBase/

ErrorDocument 404 /error.php 

#Redirect non-www to www 
RewriteCond %{HTTP_HOST} \. 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# Remove the php extension 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1/ [R=301,L] 

# Does not end with trailing slash redirect 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule^%{REQUEST_URI}/ [R=301,L] 

# To internally redirect /anything to /anything.php if /anything.php exists 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/en [NC] 
RewriteCond %{DOCUMENT_ROOT}/en/$1\.php -f 
RewriteRule ^(.+?)/?$ en/$1.php [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

Большое вам спасибо! Это работает как шарм и делает именно то, что я хочу, чтобы он делал это с меньшим количеством кода. Один вопрос, однако, я не вижу, где вы указали DirectoryIndex в своем коде? Кроме того, для всех URL-адресов должна быть добавлена ​​косая черта, чтобы у меня не было повторяющихся URL-адресов./что-нибудь должно пойти в/anything /, если что-нибудь. php существует. –

+0

@KidDiamond '/ что-нибудь должно идти в/ничего /, если что-нибудь есть. Php существует 'да, потому что у меня есть конечная косая черта в правиле'^(. +?) /? $ 'Как необязательная. Возможно, у вашего сервера хостинга есть 'index.php' по умолчанию, поэтому вам не нужно его указывать. – Prix

+0

А, я вижу. Но при правильной проверке я обнаружил, что ваш код на самом деле не работает должным образом. Мои файлы содержимого хранятся в domain.com/en/ и domain.com/fr/. С вашим кодом, когда я посещаю любую из моих страниц, он дает мне ошибку 404. Единственное, что работает, это мой корень domain.com. –

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