2010-06-17 30 views
0

可能重复:
Remove .php extension with PHP在url字符串中摆脱.php后缀的最佳方式是什么,让它们看起来很漂亮?

什么是URL字符串中摆脱的最佳方式.PHP后缀,使他们看起来很漂亮吗?

预先感谢您;-)

+2

这个问题在之前这里问:http://stackoverflow.com/questions/1337695/remove-php-extension-with-php – 2010-06-17 13:34:34

+1

不要忘了CakePHP的标签;) – dmp 2010-06-17 13:39:20

+0

如果这是一个Cake问题,那么Cake没有任何扩展名是没有意义的。 – 2010-06-17 13:50:55

回答

0
Options +MultiViews 

在Apache配置。

1

确保您的Apache安装启用了mod_rewrite(将在httpd.conf,或链接存在的文件之一,MOD​​S启用或此类)和look into how routing works in cakePHP

几个提示 - 在.htaccess文件中找到重写规则(如果服务器发出500错误,请确保没有unicode BOM),如果您确实需要这些$ _GET参数, qsappend]在您的重写规则应该通过他们。如果你仍然得到500s,正则表达式上的编译错误可以在apache的错误日志中找到,对于调试是非常宝贵的。

可能先用mod_rewrite做一个简单的项目,以了解它是如何工作的,因为蛋糕中重写和路由的组合可以相当快地变得非常复杂。

0

这样做(至少对我来说),最好的办法是:

  • 只用一个文件,接收所有请求。在大多数情况下,它将是index.php文件。
  • 然后,使用mod_rewrite规则是这样的:

RewriteEngine On 
RewriteBase /the_base_dir_of_your_app/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /the_base_dir_of_your_app/index.php [L] 
  • 然后,您可以使用analize像basename($_SERVER['REQUEST_URI']);功能的URL,以决定该怎么做。
+0

Cake已经处理了这个问题,除非你真的知道你在做什么,否则你不应该搞砸.htaccess文件,因为用一种模糊的方式很容易打破它。 – dmp 2010-06-17 13:37:01

+0

也就是说,你的提示是有效的,只是不在蛋糕的上下文;) – dmp 2010-06-17 13:38:58

+0

Ups ...没有注意到[cakephp]标签。 – Cristian 2010-06-17 13:40:25

0

使用mod_rewrite - 或开始使用ASP.NET MVC 2 :)

0

如果你使用一个框架,像CakePHP的(或任何其他),它会为你做它。免费。马上。

0

。htaccess的:


固定链接

RewriteEngine叙述上

删除WWW

的RewriteCond%{HTTP_HOST}^www.yourdomain.com [NC]

http://yourdomain.com/重写规则(*)。 $ 1 [R = 301,L]

链接

重写规则^ FAQ $ /faq.php [L]

重写规则^捐款$ /donations.php [L]

重写规则^接触$ /contact.php [L]

0

让它们看起来很漂亮?

美在眼前。这取决于你何时考虑'漂亮'。很大程度上取决于您希望摆脱那些使得工作系统成为可能的约定以及重新配置站点方面的限制。

虽然其他人提到使用mod_rewrite或URL解析或其他类似的方法,但我并不喜欢这些 - 除了非常特定于运行代码的Web服务器类型外,它们还打破了简单的1: 1映射URI中的路径和Web服务器文件系统上的路径。

你可以用你选择的扩展名替换'.php'......但是这很难满足我对'漂亮'的理解。

我采取的方法是让每个脚本(或者至少每个脚本都用作生成网页的入口点)被命名为index.php,并存在于它自己的唯一命名的目录中。这样做的主要原因与使URL看起来不错但是为了使代码库更易于管理无关 - 我也对包含文件的命名和放置有严格的标准。

HTH

C.

相关问题