是否可以只允许正确的漂亮网址?

时间:2015-06-17 20:10:19

标签: php apache .htaccess mod-rewrite friendly-url

我有这些漂亮的网址:

  • 应用程序/类别/概述
  • 应用程序/类别/新
  • 应用程序/类别/编辑/ 4

  • 应用程序/产品/概述

  • 应用程序/产品/新
  • 应用程序/产品/编辑/ 4

的.htaccess

RewriteEngine On
RewriteRule ^([a-z]+)/([a-z]+)/?([0-9]*)$ index.phpcontroller=$1&action=$2&id=$3 [NC,L]

是否可以定义任何其他其他网址返回索引?

p.e。 app / i / am / the / faster / man / alive --->应用程序/

非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

您可以为此制定新规则:

RewriteEngine On
RewriteBase /app/

RewriteRule ^([a-z]+)/([a-z]+)/?([0-9]*)$ index.php?controller=$1&action=$2&id=$3 [NC,L,QSA]

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

我添加了?在index.php之后

答案 1 :(得分:1)

您问题的答案

  

是否可以只允许正确的漂亮网址?

Sorta,但您必须更加具体地遵守规则以限制它们。举个例子。

RewriteEngine On
RewriteBase /app

#rewrite rule if starts with /app/product or /app/category
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(product|category)/([a-z]+)/([0-9]*)/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]
#else redirect to homepage
RewriteRule . app/ [R=301,L]

这样可以确保只有http://example.com/app/product/1的网址会被重写,其他所有网址都会被http://example.com/app/some/other/page重写到您的主页。