Apache mod Rewrite:如何重写这些URL来制作干净的URL

我正在尝试从最近两天重写。

  1. 强制使用www.example.com – 完成
  2. 隐藏PHP扩展 – 完成但不知道这是一个好方法
  3. 自定义页面404错误 – 完成

现在我的主要问题是

4.在根(/)上托pipe所有页面

我有以下文件:

news.php search.php store.php allstores.php 

客户端请求如下所示:

 Type 1: http://www.example.com/news Type 2: http://www.example.com/search?q=term Type 3: http://www.example.com/allstores/H Type 4: http://www.example.com/myname 

我想要处理这些客户端请求:

 Type 1: http://www.example.com/news ---rewrite to (add extension)-->news.php Type 2: http://www.example.com/search?q=term ---->No change, Let it same Type 3: http://www.example.com/allstores/H --rewrite to --->http://www.example.com/allstores.php?ln=H Type 4: http://www.example.com/myname ---rewrite to------> http://www.example.com/store?st=myname 

我尝试了以下重写:

 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteRule ^(.*) store.php?st=$1 [L] RewriteRule ^allstores/(.*)$ allstores.php?ln=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)$ /$1.php [L] ErrorDocument 404 /404.php 

任何帮助是非常可观的,谢谢

你可以试试:

 Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ## If the request is for a valid directory RewriteCond %{REQUEST_FILENAME} -d [OR] ## If the request is for a valid file RewriteCond %{REQUEST_FILENAME} -f [OR] ## If the request is for a valid link RewriteCond %{REQUEST_FILENAME} -l ## don't do anything RewriteRule ^ - [L] RewriteRule ^allstores/([^/]+)/?$ /allstores.php?ln=$1 [L,QSA,NC] # To internally forward /foo to /foo.php RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.+?)/?$ /$1.php [L] RewriteCond %{QUERY_STRING} !^q=.+ [NC] RewriteRule ^([^/]+)/?$ /store.php?st=$1 [L,QSA]