apache mod-rewrite不包括顶级域名

时间:2016-08-10 14:38:23

标签: php apache .htaccess mod-rewrite

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|swf|css|html|js|ico|pdf)$
RewriteCond %{REQUEST_URI} !^/app.php$
RewriteCond %{REQUEST_URI} !^/app.php/
RewriteRule ^(.*)$ app.php/$1?%{QUERY_STRING} [L]

好的,所以我设法创建了一个漂亮的小.htaccess规则集。它将除图像,html,js和css之外的所有流量路由到名为app.php的php文件。

唯一的问题是,有了这个,它也会将带有或不带斜杠的顶级域路由到app.php。

如何将顶级域名添加到此规则集?

1 个答案:

答案 0 :(得分:1)

如果您想避免转发目标网页,请使用:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|swf|css|html|js|ico|pdf)$
RewriteCond %{REQUEST_URI} !^/app\.php(/.*)?$ [NC]
RewriteRule ^(.+)$ app.php/$1 [L]

.+将匹配任何内容,但不会与着陆页匹配。

如果您要排除所有顶级域名网址,请使用:

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|swf|css|html|js|ico|pdf)$
RewriteCond %{REQUEST_URI} !^/app\.php(/.*)?$ [NC]
RewriteRule ^(.*)$ app.php/$1 [L]