从网站URL中删除index.php(Removing index.php from website URLs)
我正在使用Kohana框架(但我认为这与此问题无关)并且可以像这样访问页面
http://www.example.com/articles/ http://www.example.com/index.php/articles/
现在,根据经验,我通常会尝试调整我的.htaccess,只允许一种方式进入页面,并默默地重定向其他常用方法。
基本上,在上面的第一个URL中,地址实际上是内部重定向到第二个示例。
我想要做的是强制第二种类型的任何URL变成第一种类型的URL。 我并不经常对.htaccess充满信心,我的第一次尝试就是抛出一些意想不到的结果(比如无休止的循环)
这就是我想出来的
RewriteRule ^index\.php/(.*) $1 [NC,L,R=301]
任何人都可以告诉我我做错了什么,如果你也遇到了这个问题,你怎么解决它?
编辑
我决定发布我的整个.htaccess,以便检查我的所有重定向。
# Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase /~toberua/ # file not found page ErrorDocument 404 /404/ ErrorDocument 403 /403/ # get people out of my directories Options -Indexes # default page to load DirectoryIndex index.php # add trailing slash if missing RewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L] # redirect /favicon.ico requests RewriteCond %{REQUEST_URI} !^/images/layout/favicon\.ico [NC] RewriteCond %{REQUEST_URI} favicon\.(gif|ico|png|jpe?g) [NC] RewriteRule (.*) images/layout/favicon.ico [R=301,L] # send /home back to TLD RewriteRule home/ $1 [NC,R=301,L] # ensure there is no /index.php in the address bar RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/ RewriteRule ^(.*)index\.php$ $1 [R=301,L] # this was my attempt to stop /dir/index.php and make it simply /dir/ RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301] # Protect application and system files from being viewed RewriteRule ^(application|modules|system) - [F,L] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule .* index.php/$0 [PT,L]
I am using the Kohana framework (but I think it's irrelevant for this question) and pages can be accessed like so
http://www.example.com/articles/ http://www.example.com/index.php/articles/
Now, as a rule of thumb, I generally try and tweak my .htaccess to only allow one way in for a page, and silently redirect other common ways.
Essentially, in the 1st URL above, the address is actually internally redirected to the 2nd example.
What I want to do, is to force any URLs of the 2nd type to turn into URLs of the first type. I'm not often confident in .htaccess, and my first attempt is throwing some unexpected results (like endless loops on occasion)
Here is what I've came up with
RewriteRule ^index\.php/(.*) $1 [NC,L,R=301]
Can anyone tell me what I'm doing wrong, and if you've also ran into this problem, how have you solved it?
EDIT
I've decided to post my entire .htaccess so all of my redirects can be examined.
# Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase /~toberua/ # file not found page ErrorDocument 404 /404/ ErrorDocument 403 /403/ # get people out of my directories Options -Indexes # default page to load DirectoryIndex index.php # add trailing slash if missing RewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L] # redirect /favicon.ico requests RewriteCond %{REQUEST_URI} !^/images/layout/favicon\.ico [NC] RewriteCond %{REQUEST_URI} favicon\.(gif|ico|png|jpe?g) [NC] RewriteRule (.*) images/layout/favicon.ico [R=301,L] # send /home back to TLD RewriteRule home/ $1 [NC,R=301,L] # ensure there is no /index.php in the address bar RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/ RewriteRule ^(.*)index\.php$ $1 [R=301,L] # this was my attempt to stop /dir/index.php and make it simply /dir/ RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301] # Protect application and system files from being viewed RewriteRule ^(application|modules|system) - [F,L] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule .* index.php/$0 [PT,L]
原文:https://stackoverflow.com/questions/905030
最满意答案
对我来说工作正常,可能会改变另一页上的路径吗?
在FileOpen之后添加
MessageBox mb_ok handle=$4,path=$path
,$ 4不应该是“”或0 ...Works fine for me, could something be changing $path on another page?
Add
MessageBox mb_ok handle=$4,path=$path
after FileOpen, $4 should not be "" or 0...
相关问答
更多-
你可以借助你的get变量来实现这个目标 只需添加ID即可 Login like对于Windows控件实现的每个功能,nsDialogs都没有帮助程序宏,因此有时您需要咨询MSDN以查找有关自己发送的消息的信息。 !include nsDialogs.nsh !include WinMessages.nsh Page Custom MyPageCreate Page InstFiles Var MyComboHandle Function ResetCombo Pop $0 SendMessage $MyComboHandle ${CB_RESETCONTENT} 0 0 Func ...
NSIS安装程序许可证页面仅显示“关闭”和“取消”按钮(NSIS installer License page only shows “Close” and “Cancel” buttons)[2024-01-24]
拥有一个只有许可页面的安装程序是没有意义的,如果你在它之后添加另一个页面,一切都应该正常运行: !include "MUI2.nsh" !define MUI_LICENSEPAGE_RADIOBUTTONS !insertmacro MUI_PAGE_LICENSE "${__FILE__}" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" 建议不要在没 ...你不需要更换任何东西。 您只需在会话中存储值并将其显示到任何文本框,它将保持\ r和\ t。 如果要在span中显示结果,则将结果显示到带有多行的文本框,然后将css应用于无边框等。 You don't need to replace anything. You just store value in session and display it to any textbox, it will maintain \r and \t. If you want to display result in span ...装载没有显示在框内(loading not showing within the box)[2022-01-16]
您的装载机具有fixed位置,这取得了视口的位置而不是元素的位置。 $('#resultLoading>div:first').css({ 'width': '250px', 'height':'75px', 'text-align': 'center', 'position': 'absolute', 'top':'0', 'left':'0', 'right':'0', ...!include MUI2.nsh Var MyStartFolder !insertmacro MUI_PAGE_WELCOME !define MUI_PAGE_CUSTOMFUNCTION_PRE ForceStartFolder !insertmacro MUI_PAGE_STARTMENU DefaultPage $MyStartFolder !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE English Function Fo ...NSIS,不要转到下一页(NSIS, do not go to next page)[2022-07-05]
我找到了答案。 当用户单击否时,使用Abort就足够了。 安装程序不会转到下一页然后...... I have found the answer. It is sufficient to use Abort, when user clicks no. The installer does not go to next page then...Function .onInit InitPluginsDir FileOpen $0 "$pluginsdir\text.txt" w ; Normally the text file would come from a File command FileWrite $0 "Hello World$\r$\nfrom$\r$\nNSIS$\r$\n" ; Add some dummy text FileClose $0 FunctionEnd Page Custom MyCustomPageInit P ...对我来说工作正常,可能会改变另一页上的路径吗? 在FileOpen之后添加MessageBox mb_ok handle=$4,path=$path ,$ 4不应该是“”或0 ... Works fine for me, could something be changing $path on another page? Add MessageBox mb_ok handle=$4,path=$path after FileOpen, $4 should not be "" or 0...可以隐藏NSIS安装进度页面中的所有详细信息吗?(Possible to hide all details in NSIS installation progress page?)[2022-08-11]
ShowInstDetails nevershow + SetDetailsPrint none ShowInstDetails nevershow + SetDetailsPrint none ShowInstDetails nevershow Section SetDetailsPrint none SectionEnd相关文章
更多- Fluid Shopping Website 开发阶段性总结——第一周
- Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案
- 【转】php中escapeshellarg中文被过滤
- PHP中的替代语法
- PHP简介
- 顶 lucene--创建index
- merge solr index &&&&& very import create new core
- PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询
- php匹配问题
- mysql删除外键(Cannot drop index 'FK7D676EBBD0A6D8FD': needed in a foreign key constraint)
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。