回答
在Web根目录下创建.htaccess文件,并输入以下有:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^product/([0-9]+)$ product.php?id=$1
使用product.php的策略是什么?id = 777&storage = usa – Tuco 2011-04-08 00:42:29
这样只会达到9,因为它没有量词?^product /([0-9] +)$ product.php?id = $ 1 – 2011-04-08 00:47:40
RewriteRule^product /([0-9] +)/ storage /(.*)$ product.php?id = $ 1&storage = $ 2 – 2011-04-08 00:49:33
这事做与URL重写,这是你的东西设置通常与mod_rewrite的模块中的Apache
而是使用mod_rewrite你也可以用在你的.htaccess以下内容:
DefaultType application/x-httpd-php
而只是在服务器上命名您的脚本product
(不带.php文件扩展名)。
这样你就可以直接调用,并会接受任何附加的字符串作为$_SERVER["PATH_INFO"]
虽然这样做有一些重要的安全隐患,特别是如果应用程序允许用户上传。如果恶意用户可以上传一个文件并用一个扩展名来命名,而这个扩展名并没有被明确指示为PHP以外的东西,那么他将能够在服务器上执行PHP代码。 – 2011-04-08 03:12:39
确实。我希望安全后果是显而易见的。但以防万一:该设置需要在不需要的子目录中重置。特别是在世界可写的领域。 (无论如何,哪个OTOH不应低于webroot) – mario 2011-04-08 03:16:17
这是一件框架,如笨和正如其他人所建议的,Zend可以轻松实现,但仍然可以通过Apache的mod_rewrite
完成。基本上,通过.htaccess像这样所有流量引导到一个页面:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]
</IfModule>
一旦你在该网页上,你可以分析_url
变量,它可以是任何你想要的格式,并适当地处理请求。
不会CodeIgniter/Zend/Symfony /等。所有需要利用mod_rewrite来完成OP正在寻找的内容? – 2011-04-08 14:15:52
是的,我的意思是,如果你只是使用'mod_rewrite',你必须自己完成所有路由,但是默认情况下,所有的路由都具有这种路由,所以你只需启用'mod_rewrite'即可。 – 2011-04-08 14:27:03
好点。感谢澄清。 – 2011-04-08 14:44:08
对于我这个代码的工作:
在 “ 的/ etc/apache2的/网站可用/默认” 或 “ 的httpd.conf”你必须有(至少)这些选项
在默认目录
...
<Directory />
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
或网站特定站点目录
...
<Directory "/var/www/my-site">
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
并创建(它可能不存在,请确保它可以被apache读取)或编辑站点目录中的“.htaccess”(例如“/var/www/my-site/.htaccess “),并添加以下代码:使用下面的执行文件名为多年
AddType application/x-httpd-php htm html php
AddHandler application/x-httpd-php .htm .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
如果uri是/hello.world,这个传奇将会失败 – Jacques 2018-01-07 06:03:53
我这样做是‘支持’(NOT Support.php,我不想两种方式来访问该文件)。
<Files Support>
SetHandler php-script
</Files>
不过,我已经开始使用的Plesk作为PHP 7.0执行脚本运行时与这个麻烦。根(.com/index.php)将以PHP 7运行,但我的任何php-script文件(.com/Support)都将作为我的Plesk默认PHP 5.4版本运行。我还没弄清楚为什么会这样做,但它确实解决了设置默认处理程序的问题。
- 1. WordPress页面没有.php扩展名
- 2. PHP查找扩展没有扩展名
- 3. PHP如何执行其他文件扩展名到PHP?
- 4. 在url中隐藏扩展名.php mod_rewrite
- 5. 如何在我的网页上启用.php扩展名?
- 6. 没有文件扩展名的网页
- 7. php如何在cakephp中执行带有扩展名.ctp的文件?
- 8. 隐藏地址栏中的.php扩展名也会打开一个没有.php扩展名的页面
- 9. 如何更改.php网站页面的扩展名?
- 10. 从URL中删除.php扩展名(.htaccess)
- 11. 加载php页面.php扩展名
- 12. PHP,获取文件名没有扩展
- 13. 删除扩展名为.php的URL
- 14. 禁用.php扩展名,但运行没有.php的文件作为php文件
- 15. PHP扩展没有发现
- 16. PHP链接没有扩展
- 17. 将带有shtml扩展名的URL重定向到带有htacess的php扩展
- 18. 如何获得图片扩展和名称,当url没有这个。 (PHP)
- 19. jquery ajax没有扩展名的URL
- 20. 如何在没有任何扩展名的php中保存图像
- 21. 如何使用GRAV中的php扩展名重定向页面
- 22. PHP RegEx扩展 - 如何仅剥离url = *?
- 23. 将.do扩展名用作所有php文件的.php扩展名
- 24. Web.config运行PHP文件时没有扩展名
- 25. 如何渲染带.html扩展名的.php URL
- 26. 在URL中没有文件名和扩展名的起始页面
- 27. 如何让content_scripts在file中执行:/// Chrome扩展中的URL
- 28. 搜索URL没有文件扩展名
- 29. 没有扩展名的jQuery .load页面
- 30. 没有扩展名的URL(如HTML)如何工作?
Apache或IIS? – Ben 2011-04-08 00:34:00
Apach | - | - | - | - | – Tuco 2011-04-08 00:44:09