如何从RewriteRule中的(。*)中排除一些路径

时间:2015-07-04 21:04:54

标签: php apache .htaccess mod-rewrite

我有一些PHP文件

index.php
fun.php 
user.php 

以及一些文件夹,例如(admincploginimages ...)

我想要的是:

而不是:domain.com/index.php?c=funny&p=2

这:domain.com/funny/2

而不是:domain.com/index.php?c=funny

这:domain.com/funny

而不是:domain.com/index.php?p=5

这:domain.com/5

而不是:domain.com/user.php?p=nice_guy

这:domain.com/u/nice_guy

而不是:domain.com/fun.php?p=cool_post

这:domain.com/p/cool_post

可悲的是,我能够实现的唯一部分就是这一部分:

domain.com/funny/2

这是我的.htaccess文件

ewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p/(.*)$ fun.php?p=$1
RewriteRule ^(.*)/(.*)$ index.php?c=$1&p=$2
RewriteRule ^u/(.*)$ user.php?u=$1

1 个答案:

答案 0 :(得分:0)

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p/([^/]+)$ fun.php?p=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^u/([^/]+)$ user.php?u=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?p=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?c=$1&p=$2 [L]