隐藏URL扩展名:重写vsredirect

我已经读了很多问题和答案,但我不能确定哪一个更好,或者如何使用这些扩展隐藏方法的组合。
我想要的是有一个url重写像stackoverflow ! 那么我还有什么要做这些规则:

url: example.com/file.anyEXT... show content of => 404 url: example.com/unknown-Cat... show content of => 404 url: example.com/cat1 show content of => example.com/cat1/index.php url: example.com/cat1/index.php show content of => 404 url: example.com/cat1/any...any show content of => 404 url: example.com/cat1/11/title show content of => example.com/cat1/single.php (post id 11) 

但我的htaccess文件只是这样做:

 url: example.com/file.anyEXT show content of => example.com/index.php (should show 404) url: example.com/unknown-Cat show content of => example.com/index.php (should show 404) url: example.com/unknown-Cat/ show broken content of => index.php => cant load css and js => (should show 404) url: example.com/file.anyEXT/ show broken content of => index.php => cant load css and js => (should show 404) url: example.com/cat1 show content of => example.com/cat1/index.php (works fine!) url: example.com/cat1/index.php show content of => example.com/cat1/index.php (should show 404) url: example.com/cat1/any...any show content of => 404 (works fine!) url: example.com/cat1/11/title show content of => example.com/cat1/single.php (post id 11) (works fine!) 

我拥有的

 mydomain-| | | |__cat1-|__.htaccess // cat1 htaccess | |__index.php | |__single.php | |__cat2-|__.htaccess // cat2 htaccess | |__index.php | |__single.php ... |__.htaccess // root htaccess |__index.php // home-page 

我的htaccess基于大多数build议的方式:

 <IfModule mod_rewrite.c> # Enable Rewrite Engine RewriteEngine On RewriteBase / <files ".htaccess"> order allow,deny deny from all </files> Options All -Indexes # Redirect from www. RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] # Removes index.php from ExpressionEngine URLs RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] # Directs all EE web requests through the site index file RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule> 

这是我在我的根文件夹和所有我的子文件夹中使用我有两个文件index.phpsingle.php ,我有.htaccess这样在每个子文件夹中:

 Options +FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /cat1/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(\d+)/(.+?)/?$ single.php?id=$1&title=$2 [L,QSA] </IfModule> 

您可以使用:

DocumentRoot/.htaccess

 <Ifmodulee mod_rewrite.c> <files ".htaccess"> order allow,deny deny from all </files> Options All -Indexes RewriteEngine On RewriteBase / # Redirect from www. RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,NE,R=301] # 404 for index.php in URL RewriteCond %{THE_REQUEST} /index\.php[\s?/] [NC] RewriteRule ^ - [L,R=404] </Ifmodulee> 

/cat1/.htaccess

 Options +FollowSymLinks <Ifmodulee mod_rewrite.c> RewriteEngine on RewriteBase /cat1/ RewriteCond %{THE_REQUEST} /index\.php[?\s] [NC] RewriteRule ^index\.php$ - [L,R=404] RewriteRule ^(\d+)/([^/]+)/?$ single.php?id=$1&title=$2 [L,QSA] </Ifmodulee> 

我不知道如果mod_rewrite是甚至能够做你想做的事情。 但我想你真正想要的是引导。 这就是我猜测什么stackoverflow.com也使用。 像最现代的网络应用程序一样

这意味着所有的请求都通过一个像PHP脚本index.php。

所以你会把请求的路径给你的index.php文件,它处理请求并加载请求的页面。

这是一个解释如何使用PHP: http : //www.binpress.com/tutorial/php-bootstrapping-crash-course/146

如果你使用像Zend Framework这样的框架,那么就已经有了一个引导集成了。