简体   繁体   中英

.htaccess not allowing sub-directory to work

Here is the .htaccess file

RewriteEngine on
RewriteCond $1 !^(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)
RewriteRule ^(.*)$ /index.html?tpl=$1 [L]


Options +FollowSymlinks

However what is happening is that all the following folders wont allow me to go into them and view a PHP file.

|administrator|system|template|js|lib

I thought by putting the files in RewriteCond that it would allow a user to still go to http://example.com/news/happy which then would go to the index.php?tpl=etc etc but it has stopped me from going into any subdirectory like

http://example.com/system/index.php

I don't know if this would work for you. But what I do is to add this rules to load calls to any .php file without the .php ending. You can call both, with or without that ending.

For example, you can call my_url.com/myfolder/myfile and it will load myfile.php , with the friendly URL.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

i would like to recommend that you read about mod rewrite first

1 - put that line at top

 Options +FollowSymlinks

That line ask your server to follow symlinks but i would like recommend that you use the more secure option "SymLinksIfOwnerMatch"

Source:

http://httpd.apache.org/docs/2.2/mod/core.html#options#FollowSymLinks

RewriteEngine on

Enables or disables runtime rewriting engin

Source: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteengine

 RewriteCond $1 !^(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)

Here you go . that rule ask the web server to add rewrite Condition to ignore everything listed in your regex

also i have added regex explain for you

 ! 

not equal ^ Start with

 RewriteRule ^(.*)$ /index.html?tpl=$1 [L]

you are asking to write everything else to index.html?tpl=$1 ** I think you mean index.php i will assume that you don't need the query string

i would like to recommend using a better way to handle the excluding

 RewriteEngine On
 Options +FollowSymLinks
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !(index\.html|index.php|administrator|system|template|js|lib|favicon\.ico|robots\.txt)
 RewriteRule ^(.*)$ /index.html?tpl=$1 [L]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM