首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.htaccess删除文件扩展名和URL变量

使用.htaccess删除文件扩展名和URL变量
EN

Stack Overflow用户
提问于 2014-03-19 10:17:01
回答 1查看 3K关注 0票数 1

我正在为自己编一个小博客,我找到了一个有用的.htaccess文件来删除文件扩展名:

代码语言:javascript
复制
AddType text/x-component .htc
RewriteEngine On
RewriteBase /

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php 

这是很好的工作,所有的页面显示.php较少。我知道我想对此进行扩展,所以当我单击某个特定博客帖子(例如/ blog /index.php?art=1)的链接时,它只显示在url中作为网站/blog/1。我想标记到.htaccess文件的末尾:

代码语言:javascript
复制
RewriteRule ^blog/(.*)$ blog/index.php?art=$0 [L]

但这似乎不起作用。实际上,它会破坏博客页面,因此不会从DB中提取任何片段。

我的.htaccess文件位于根目录中,博客文件为/ root / blog /index.php。

如能提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-19 10:30:20

与大多数其他语言不同,.htaccess中的参数是而不是基于0的.要访问第一个参数,您应该使用$1,而不是$0

下列措施应能发挥作用:

代码语言:javascript
复制
RewriteRule ^blog/(.*)$ blog/index.php?art=$1 [L]

在其中添加一些测试也是值得的,例如,您可能只希望将数值传递给art,以便您可以使用以下方法对其进行改进:

代码语言:javascript
复制
RewriteRule ^blog/([0-9]+)$ blog/index.php?art=$1 [L]

此外,添加QSA标志可能是值得的,因为这也将保留在原始URL中传递的任何查询字符串:

代码语言:javascript
复制
RewriteRule ^blog/([0-9]+)$ blog/index.php?art=$1 [L,QSA]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22502571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档