2

我需要有 URL,例如mydomain.com/whatever,其中“whatever”可以是任意字符串,都调用同一个 php 文件,在其中整理出要显示的内容(或显示 404)。但是,我希望文件和其他 php 文件能够正常工作(任何其他别名或文件系统中实际存在的文件)。

一个简单AliasMatch /* myphpfile.php的(在 httpd.conf 中的所有其他别名之后)在我自己的设置上工作正常,但在生产服务器上,通配符别名将所有其他 php 文件发送到myphpfile.php. 我不确定还有什么可能令人困惑的事情。

从技术上讲,whatever字符串将是字母和小写,因此它可以过滤,但我用正则表达式所做的所有尝试都没有成功。

4

1 回答 1

2

使用这些规则(你需要mod_rewrite):

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

RewriteRule ([a-z]+) /myfile.php [L]
  1. 放在网站根文件夹中的 .htaccess 中。如果放置在其他地方,可能需要进行一些调整。

  2. 这会将所有不存在的单小写单词请求重写(内部重定向)到/myfile.php,其中使用$_SERVER['REQUEST_URI']脚本可以确定调用了哪个 URL 并决定做什么(路由)。

  3. 这将适用于 URL /whatever,但不会对/what-ever, /hello/pinky, . 执行任何操作/hello123

于 2011-07-29T19:26:41.450 回答