草庐IT

php - 在 PHP 中使 url seo 友好和从文件中删除扩展名时面临的问题

coder 2024-03-01 原文

我在使 url seo 友好和从 php 文件中删除扩展名方面遇到了问题。如果我使用其中一个,要么删除扩展名,要么使 url seo 友好,它工作正常,但如果我同时使用这两个,则只有 .htaccess 的上半部分适用于这两个。

我的 .htaccess 代码是

Options +FollowSymLinks    
Options -Multiviews    
RewriteEngine on    

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^([^/.]+)/$ $1.php    
RewriteRule ^([^/.]+)/([^/.]+)/$ /$1/$2.php    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$    
RewriteRule (.*)$ /$1/ [R=301,L]    

RewriteRule ^/([a-zA-Z0-9]+)/$ vendorlist.php?bcat=$1     
RewriteRule ^([^/.]+)/([^/.]+)/?$ /vendor.php?bcat=$1&vendor=$2     

如果我按上面的方式使用它,它只会删除扩展名。如果使用 seo 友好的 url,则会出现错误 404。但是如果我像这样更改位置

Options +FollowSymLinks    
Options -Multiviews    
RewriteEngine on    

RewriteRule ^/([a-zA-Z0-9]+)/$ vendorlist.php?bcat=$1     
RewriteRule ^([^/.]+)/([^/.]+)/?$ /vendor.php?bcat=$1&vendor=$2     

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^([^/.]+)/$ $1.php    
RewriteRule ^([^/.]+)/([^/.]+)/$ /$1/$2.php    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$    
RewriteRule (.*)$ /$1/ [R=301,L]    

然后它只会使 url SEO 友好。没有扩展删除工作。

请帮我解决这个问题,在此先感谢....

最佳答案

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php 

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

来源: - User:Dave/Web Hack Notes (Non-Wiki)#Prettier URLs Through .htaccess

上面代码框中显示的示例只是一个建议。在上面的链接(指向我维护的维基页面)中找到的几个教程实际上值得一读。

关于php - 在 PHP 中使 url seo 友好和从文件中删除扩展名时面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27224446/

有关php - 在 PHP 中使 url seo 友好和从文件中删除扩展名时面临的问题的更多相关文章

  1. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  2. ruby - 如何在 Cucumber 步骤定义中使单词可选? - 2

    我在下面有一个步骤定义,它执行我想要它执行的操作,即它根据“PAGES”哈希的“page”元素检查页面的url。Then(/^Ishould(still)?beatthe"(.*)"page$/)do|still,page|BROWSER.url.should==PAGES[page]end步骤定义用于两者我应该在...页面我应该还在...页面但是,我不需要将“still”传递到block中。我只需要它是可选的以匹配步骤但不传递到block中。我该怎么做?谢谢。 最佳答案 您想将“静止”组标记为非捕获。这是通过使用?:启动组来完成的

  3. ruby - 使用 ruby​​ 从文本中删除 url - 2

    给定一个文本,我想删除url部分并保留其他文本。例子:'blablabla...blablabla...http://bit.ly/someuriblablabla...'成为'blablabla...blablabla...blablabla...'是否有任何ruby​​内置方法可以有效地执行此操作? 最佳答案 尝试使用正则表达式:(?:f|ht)tps?:\/[^\s]+ 关于ruby-使用ruby​​从文本中删除url,我们在StackOverflow上找到一个类似的问题:

  4. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  5. ruby - 如何将文本文件读入数组数组(每个子数组都是文本文件中的一行?) - 2

    所以我在Ruby方面几乎是个新手,我整理了一个代码来解决MinCut问题(对于一个作业,是的——我整理并测试了那部分代码),并且我无法弄清楚如何读取文件并将其放入数组数组中。我有一个文本文件要阅读,其中包含不同长度的列,如下所示137791642123134348123134109我想将它读入一个二维数组,其中每一行和每一列都被拆分,每一行都进入一个数组。因此,上述示例的结果数组将是:[[1,37,79,164],[2,123,134],[3,48,123,134,109]]我读取文本文件的代码如下:defread_array(file,count)int_array=[]File.f

  6. 从文本文件中提取 Ruby 数据 - 2

    我有一个相对较大的文本文件,其中包含如下分层的数据block:ANALYSISOFXSIGNAL,CASE:1TUNEX=0.2561890123390808LineFrequencyAmplitudePhaseErrormxmymsp10.2561890123391E+000.204316425208E-010.164145385871E+030.00000000000E+00100020.2562865535359E+000.288712798671E-01-.161563284233E+030.97541196785E-041000(它们包含更多行然后重复)我想先提取TUNEX=

  7. ruby-on-rails - Rails & Redcarpet:在 ApplicationHelper 中使用时未初始化的常量 Redcarpet::Render - 2

    我正在关注SyntaxHighlightingRevised的RailsCasts剧集.我将我的ApplicationHelper更新为如下所示:require'redcarpet'moduleApplicationHelperclassHTMLwithPygments但是,我的网络应用返回RoutingErroruninitializedconstantRedcarpet::RenderTryrunningrakeroutesformoreinformationonavailableroutes.我使用的是Rails3.2.11,Redcarpet在Rails控制台中响应良好。我最初

  8. ruby - 删除文本文件中的特定行? - 2

    如何从文本文件中删除单个特定行?例如第三行,或任何其他行。我试过这个:line=2file=File.open(filename,'r+')file.each{last_line=file.posunlessfile.eof?}file.seek(last_line,IO::SEEK_SET)file.close不幸的是,它什么都不做。我尝试了很多其他解决方案,但没有任何效果。 最佳答案 我认为由于文件系统的限制,您不能安全地这样做。如果你真的想做一个就地编辑,你可以尝试将它写入内存,编辑它,然后替换旧文件。但请注意,这种方法至少存

  9. 企业大数据发展面临问题之存算分离技术思考 - 2

    文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据

  10. ruby-on-rails - 使用 Ruby 从文本中删除硬换行符 - 2

    我有一些带有硬换行符的文本,如下所示:Thisshouldallbeononelinesinceit'sonesentence.Thisisanewparagraphthatshouldbeseparate.我想删除单个换行符但保留双换行符,所以它看起来像这样:Thisshouldallbeononelinesinceit'sonesentence.Thisisanewparagraphthatshouldbeseparate.是否有一个正则表达式可以做到这一点?(或一些简单的方法)到目前为止,这是我唯一可行但感觉很老套的解决方案。txt=txt.gsub(/(\r\n|\n|\r)/

随机推荐