Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 49

0
votes
answers
19 views
+10

重定向與被迫小寫字母來識別文件名

0

第一個字母htaccess的,我有以下規則:重定向與被迫小寫字母來識別文件名

RewriteRule ^([a-z])([w-]+)/?$ $1.php?var=$2 [L,QSA,NC] 

這重定向到/fH128f.php?var=H128。我希望能夠將標識文件名的第一個字符變爲大寫字母,然後以小寫字母重定向到該文件名。因此/FH128將重定向到f.php?var=H128

我嘗試以下,但既不工作:

RewriteRule ^([a-z])([w-]+)/?$ ${lowercase:$1}.php?var=$2 [L,QSA,NC] 
RewriteRule ^([a-z])([w-]+)/?$ {lowercase:$1}.php?var=$2 [L,QSA,NC] 
沙发
0
0

裏面你的Apache配置文件,如httpd.conf或虛擬主機配置(但不是.htaccess)定義此RewriteMap

RewriteMap lowercase int:tolower 

內。然後.htaccess使用您的規則爲:

RewriteRule ^([a-z])([w-]+)/?$ ${lowercase:$1}.php?var=$2 [L,QSA,NC] 
0
votes
answers
22 views
+10

CakePHP的文件夾內的在線

0

我有一個文件夾內的CakePHP應用程序的在線像這樣:https://www.example.com/mainCakePHP的文件夾內的在線

然而,當我進入那裏,我想我的網址顯示是這樣的:https://www.example.com

我已經嘗試過修改核心.php

Configure::write('App.baseUrl', '/'); 

它顯示我想要的,但返回「在此服務器上找不到請求的URL/info/inicio」。

我知道解決方案只是刪除文件夾「main」並直接加載cakephp應用程序,但目前不可能。

+1

我可以訪問Apache配置一個新的領域,你可以修改' DocumentRoot'指向正確的文件夾。如果沒有,通過'.htaccess'也可以達到類似的結果。 –

沙发
0
0

我解決它通過去我的cPanel和設置https://www.example.com/main爲指針,然後創建一個指向https://www.example.com/admin

0
votes
answers
20 views
+10

計算每個產品的加權平均值

-3

我有一個與計算有關的問題。所以要清楚,我上傳了Excel表,在那裏我做了計算。我對加權平均值感興趣,基本上如何做我在excel中訪問的計算。計算每個產品的加權平均值

我在Excel中的公式看起來像這樣:=SUMIFS($I:$I;$G:$G;G2;$H:$H;H2;$B:$B;B2;$C:$C;C2)/SUMIFS($F:$F;$G:$G;G2;$H:$H;H2;$B:$B;B2;$C:$C;C2) 我爲每個代碼(產品),每個組,每個月,每年獲得正確的銷售量和銷售量數字。

我有相同的數據庫在Excel中,我得到所有額外的計算領域與收入,月和年的值在Excel中。然而,我不得不知道如何重現我的Excel訪問公式。

圖片上加權的每件商品包含上述公式。我需要找到一種方法將這種計算包括在訪問中,其中數據是相同的。

Code Group  Price per t Volume MONTH YEAR Revenue   Weighted 
13753 avangard 12 818,84 108,85 1  2008 1 395 330,73 13 826,51 
13755 super  11 488,83 26,76 1  2008 307 441,09  15 726,96 
14899 super  11 607,86 64,39 1  2008 747 430,11  15 591,86 
13747 super  11 892,57 62,96 1  2008 748 756,21  16 199,30 
13753 avangard 18 134,69 94,65 1  2008 1 716 448,41 13 826,51 

如何應該計算值= SUMIFS(收入; CriteriaRange(1)=月;標準(1)=行2(月); CriteriaRange(2)=年份;標準(2)=行2(年) ; CriteriaRange(3)=代碼;標準(3)=行2(編號))/ SUMIFS(音量; CriteriaRange(1)=月;標準(1)=行2(月); CriteriaRange(2)=年份;條件(2 )= Row2(Year); CriteriaRange(3)= Code; Criteria(3)= Row2(Code))

如果我們將自己與表格樣本中的計算加權分開,僅基於所提供的數據, 13753 =(1 395 330,73 + 1 716 448,41)/(108,85 + 94,65)= 15 291,30

@Darren Bartr上庫克。找到我需要的解決方案。非常感謝您的幫助。這是我用來鏡像SUMIFS函數的最終SQL代碼。

SELECT Data.Code, 
      Справочник_групп_продукции.Group, 
      Month([Dated]) AS LMonth, 
      Year([Dated]) AS LYear, 
      SUM([Price per t] * [Volume])/SUM([Volume]) AS Wght_Avg 
FROM Справочник_групп_продукции INNER JOIN Data ON Справочник_групп_продукции.[Code] = Data.[Code] 
GROUP BY Data.Code, 
        Month([Dated]), 
        Year([Dated]), 
        Справочник_групп_продукции.Group; 

https://imgur.com/DyMYnEC

+1

您標記有Access和它的聲音就像你需要查詢幫助一樣。如果是這樣,那麼你需要以表格形式顯示樣本輸入數據以及預期輸出。 –

+0

我附加了access和excel中的數據以及excel表中最右欄(加權)的預期結果。我不知道應該怎麼做,通過訪問公式或查詢。我是訪問中的小菜鳥。 – Andrey

+0

請注意,您應儘可能避免共享文件,特別是使用可延遲並顯示廣告的黑幕文件共享服務。請參閱[如何在MS上共享SO的表格](https://meta.stackoverflow.com/questions/359195/share-a-table-on-stack-overflow-for-easy-import-into-ms-access )。這是一個專業和enthousiast程序員的網站,有關您發佈的主題的一些編程知識預計。 –

沙发
0
1

隨着你的表設置爲示例表(抱歉,不能看到圖片)和 表名作爲MyTable你只需要執行的總和(收入/音量)並按代碼,月份和年份分組。

SELECT  Code 
      , Group 
      , lMonth 
      , lYear 
      , ROUND(SUM(Revenue)/SUM(Volume),2) AS Weighted_Avg 
FROM  MyTable 
GROUP BY Code 
      , Group 
      , lMonth 
      , lYear 

注:我已經更新了MonthYear字段的名稱lMonthlYear避免保留字衝突。
我可能會改變我的設計使用真實日期,而不是月份和年份數字,但。

NB 2:我也想移動Group使用Code作爲該表中的主鍵另一個表和外鍵在主表。這將消除組名中的任何拼寫錯誤。
新的查詢是:

SELECT  MyTable.Code 
      , Group 
      , lMonth 
      , lYear 
      , ROUND(SUM(Revenue)/SUM(Volume),2) AS Weighted_Avg 
FROM  MyTable LEFT JOIN GroupTable ON MyTable.Code = GroupTable.Code 
GROUP BY MyTable.Code 
      , Group 
      , lMonth 
      , lYear 

編輯:

縱觀SQL你張貼了這個更新SQL應該工作:

SELECT  Format(Dated,"mmm-yyyy") AS Month_Year 
      , Group 
      , Data.Code 
      , [Price per t]*volume AS Revenue 
      , ROUND(SUM([Price per t]*[Volume])/SUM(Volume),2) AS Weighted_Avg 
FROM  Справочник_групп_продукции INNER JOIN Data ON Справочник_групп_продукции.Code = Data.Code 
GROUP BY Format(Dated,"mmm-yyyy") 
      , Group 
      , Data.Code 
      , [Price per t]*volume 
+0

謝謝你的回答。雖然你能否提供一些解釋。根據日期處理月/年計算的方法是什麼(字段在表中稱爲「過期」)?我有日期。你也可以解釋我,我怎樣才能使你的代碼適應我的查詢,因爲我使用查詢從其他表中查找組。我有以下代碼,但是它返回了一個錯誤。我用代碼更新了我的主帖。 – Andrey

+0

我認爲你的錯誤來自加權平均值。您的收入按照[[每噸價格] * [交易量] AS收入]計算,您不能在加權平均計算中將其稱爲「收入」。使用'ROUND(SUM([每t價格] * [Volume])/ SUM(Volume),2)AS Weighted_Avg'。您的日期可以使用格式(dDate,「mmm-yyyy」)AS Month_Year'顯示 - 您也需要將其分組。然後,您可以通過使用WHERE dDate BETWEEN#2008/01/01#AND#2008/02/01#-1 –

+0

限制到2008年1月您也無法在查詢中顯示「每噸價格」或「交易量」隨着它的變化 - 代碼13753的12 818,84和18 134,69不會組合在一起。同樣在你的SQL中,你在FROM子句的最後有一個分號(';') - 如果你使用它,它應該在查詢結尾。 –

0
votes
answers
38 views
+10

選擇默認類型要下載

0

我上傳了.vtt文件在我的網站,我可以通過網站(http://temporarysubs.8u.cz/subtitles.vtt)訪問它,選擇默認類型要下載

但是當我右鍵單擊並選擇另存爲...,默認選項是「另存爲subtitles.txt代替subtitles.vtt

有人可以幫我改頁面,請默認的文件類型

+0

您是否在您的.htaccess中設置了vtt MIME類型? –

+0

我知道這將是與htaccess的東西:D然而,即時通訊一個完整的新手,他們沒有把我們關於htaccess所以我不知道如何做到這一點。你能給我一個線索嗎? – Desii

沙发
0
2

添加VTT MIME類型.htaccess文件:

AddType text/vtt .vtt 
0
votes
answers
22 views
+10

如何在wordpress中使用Access數據庫?

-5

我有一個wordpress網站,我有一個包含用戶和用戶文件的Access數據庫。我如何在wordpress數據庫中使用該數據庫?我應該將其轉換爲mysql數據庫並將其注入wordpress用戶表中或創建另一個用戶表或使用插件如buddypress? 謝謝如何在wordpress中使用Access數據庫?

+0

定義「使用該數據庫」。你需要一次導入它?或者你需要一個活的連接?你到目前爲止嘗試過哪些解決方案? – ashleedawg

+0

我需要導入它,我沒有嘗試將它導入wordpress用戶表。我不知道這是否是一個好做法。我看到一個名爲buddypress的插件 –

沙发
0
0

其中一種可能的方法是通過CSV將您的訪問數據庫用戶導入到wordpress中。有幾個插件,你會發現谷歌關鍵詞「WordPress導入用戶」。

這樣的Import users from CSV with meta

0
votes
answers
28 views
+10

VBA瀏覽並選擇

0
Private Sub bBrowse_Click() 

    Const msoFileDialogFilePicker As Long = 3 
Dim objDialog As Object 

Set objDialog = Application.FileDialog(msoFileDialogFilePicker) 

With objDialog 
    .AllowMultiSelect = True 
    .Show 
    If .SelectedItems.Count = 0 Then 
     MsgBox "No file selected." 
    Else 
     Me.[File Link].Value = Dir(.SelectedItems(1)) 
    End If 
End With 

End Sub 

我能得到它在細胞中添加我需要它,但它時,它被點擊它不會打開文件或路徑VBA瀏覽並選擇

+0

https://stackoverflow.com/questions/9476268/filedialog-doesnt-work?answertab=oldest#comment17467925_9476268我用這個代碼,但我需要的完整路徑添加到文件 –

+0

[問] - 請解釋你想要做什麼,什麼不工作。 – Andre

+0

嗨安德烈,我想鏈接到共享驅動器的文件。一旦它被添加到記錄中。另一個人可以點擊鏈接並打開文件。由於將要通過的項目數量,我無法使用附件。它目前顯示文件名,但我無法打開它。我認爲它只是添加文件名而不是路徑。 –

沙发
0
0

請仔細閱讀本:Debugging VBA Code
學習如何瀏覽代碼並檢查變量。

.SelectedItems(1)已經包含完整路徑,但Dir(.SelectedItems(1))只返回文件名。所以刪除Dir()

現在要從記錄中實際打開文件,您需要額外的代碼,例如,在File Link文本框旁邊的按鈕中或在其DblClick事件中。

在這裏看到:Open Hyperlinks in Access

0
votes
answers
28 views
+10

從VBA調用WinSCP命令行時獲取「命令參數太多」

1

Upload file via FTP from Excel VBA非常有幫助,我使用代碼將本地文件夾同步到我的FTP服務器。從VBA調用WinSCP命令行時獲取「命令參數太多」

Call Shell(_ 
    CurrentProject.Path & "WinSCP.com /log=" & CurrentProject.Path & "ftp.log /command " & _ 
    """open ftp://user:[email protected]/"" " & _ 
    """synchronize local " & localfolder & " /www/remotefolder/wines -filemask=""*.png"" " & _ 
    """exit""") 

我想在結束時發出exit命令,但代碼讓我對命令「同步」一個

參數太多。

日誌中的線告訴我

synchronize local C:localfolderwines /www/remotefolder/wines -filemask=*.png exit 

exit是在同一行synchronize一個,當我使用put腳本,這不會發生。我能做些什麼來防止這種情況發生?

+0

確實清理換計算器錯誤,感謝poining出來 –

沙发
0
1

您錯過synchronize命令後的結束報價。並且-filemask價格的報價必須翻倍。或者實際上,您不需要它們,因爲該值不包含空格。

這樣做:

"""synchronize local " & localfolder & " /www/remotefolder/wines -filemask=*.png""" & _ 

https://winscp.net/eng/docs/commandline#syntax

+1

感謝您的快速回答,擔任我想它。喜歡你在WinSCP上的工作! –

46
votes
answers
17 views
+10

Apache .htaccess redirect to HTTPS before asking for user authentication

This is my .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

AuthUserFile /etc/hi
AuthName "hi"
AuthType Basic
require valid-user

It asks for user authentication using http, meaning that password will be sent in plain text. It will than redirect to the https version and ask the password again.

How can i fix it?

up vote 14 down vote accepted favorite
沙发
+140
+50

我這樣繞過它。只允許非SSL,因為它將被重定向,然後在SSL上需要auth一次...

  SetEnvIf%{SERVER_PORT} ^ 80 $ IS_NON_SSL RewriteEngine On RewriteCond%{HTTPS} off RewriteRule(。* )https://%{HTTP_HOST}%{REQUEST_URI} AuthUserFile / etc / hi AuthName“hi”AuthType Basic需要來自env = IS_NON_SSL的有效用戶允許 
     
			
        

優雅解決一個不完全明顯的問題。我最終使用了來自env =!HTTPS的Allow,其中在SSL請求上設置了HTTPS,但同樣的概念適用。謝謝。 - Chris Heald 2013年5月25日7:04

SERVER_PORT不是SetEnvIf指令中可用的選項,根據httpd.apache.org/docs/2.2/mod/mod_setenvif.html#setenvif中的文檔 - Alagappan Ramu 2014年3月20日19:18

至少在我的情況下,它仍然需要兩次身份驗證。 - LWC 2016年3月22日20:55

這不起作用。(Apache 2.2) - TamásBolvári於2016年5月15日21:37

@ChrisHeald你可以發布你的解決方案作為答案嗎?因為這裡的這個對我不起作用。 - 亞當2017年4月18日13:41

+150
<p>如果您運行的是Apache 2.4,可以使用<a href="http://httpd.apache.org/docs/current/sections.html" rel="noreferrer">配置部分</a>來解決這很容易。</ p> <p>例如...... </ p> <pre> <code>#重定向到RewriteEngine RewriteCond%{HTTPS} off RewriteRule(。*)https://%{HTTP_HOST} %{REQUEST_URI} [R,L]#僅在使用HTTPS時驗證用戶#啟用&lt; v2.4#SSLRequireSSL#ErrorDocument 403 / secure-folder /#啟用&gt; v2.4&lt; If“%{HTTPS} =='on'“&gt; AuthType Basic AuthName“Special things”AuthUserFile /etc/blah.htpasswd#防止此'Require'指令覆蓋先前合併的任何&lt; IfVersion&gt; = 2.4&gt; AuthMerging和&LT; / IfVersion&GT; 需要有效用戶#啟用&gt; v2.4&lt; / If&gt; </代碼> </ PRE>

絕對不要這樣做。由於指令合併順序(最後合併),經過身份驗證的用戶可以訪問先前使用阻止的任何文件或目錄!例如,在普通服務器設置上,.htaccess文件將被授予有效用戶的訪問權限。 - alecov 2014年11月8日17:56

@Alek,我添加了一個'AuthMerging'指令,我認為它解決了你提出的問題。因此,所有訪問者仍然被重定向到HTTPS,但除了先前合併的指令添加的現有限制之外,任何HTTPS請求都要求訪問者進行身份驗證。你怎麼看? - Molomby於2014年12月5日2:16

我沒有測試這個設置,但從文檔中看起來沒問題,所以我會接受你的話。 - alecov 2015年3月7日14:51

@Molomby,請刪除內聯註釋:註釋可能不會與配置指令包含在同一行中。 - LWC 2016年3月22日21:02

+90

非常感謝,Istador!

我的Apache版本為2.2(Synology NAS DSM 5.1),因此這兩個版本無法正常工作:

  RewriteOptions Inherit IfVersion   

將它們(以及版本&gt; = 2.4的部分)取出後。整件事開始對我有用了。

這個話題有很多建議,我花了兩天時間嘗試一下。

但只有這一個適合我。

這就是我所做的:

  RewriteCond上的RewriteEngine%{HTTPS} off RewriteRule ^。* $ https://%{SERVER_NAME}%{REQUEST_URI} [R = 301,L] AuthType基本AuthName“私有區域”AuthUserFile /path/to/file/.htdigest命令拒絕,允許拒絕所有滿足任何允許來自env =!
     
			
        

請不要添加“謝謝”作為答案。一旦您有足夠的聲譽,您就可以對您認為有幫助的問題和答案進行投票。 - 伊利亞2015年5月10日9:18

這很奇怪。根據Apache 2.2 for mod_rewrite(對於Apache 1.3及更高版本)和mod_version(對於Apache 2.0.56及更高版本)的文檔,兩個指令都應該是有效的,假設安裝了兩個模塊。 - Istador 2015年6月28日15:56

@Ilya。“謝謝”是有幫助的,因為帖子與他們的特定帖子有關,這有助於為像我這樣的讀者提供上下文。沒有它,讀者可能會認為它只是直接處理OP的帖子。當然,他們可以做一個'@Istador'更簡潔! - Patanjali 2016年10月18日23:55

這似乎不適用於基於Debian的2.2版本 - 來自env =!HTTPS似乎沒有效果,導致所有頁面繞過auth步驟。 - fooquency 18年7月15日17:03

+40
/ code>

它的工作方式是當你通過 http:// 而不是 https:// 來調用網站時,它會重定向你到錯誤頁面。訣竅是使用 https:// 的正確鏈接作為默認錯誤頁面。

+20

我們客戶的webapp安裝在他的webuser目錄中。授權在mod_rewrite規則之前處理( https://serverfault.com/a/443185/253111 ),我們不能獲得已接受的工作答案,因此mod_rewrite似乎不是一個選項。

最終我們明確要求SSL並使用HTTPS上的webapp的root作為403和404錯誤文檔。因此,當通過HTTP訪問任何頁面(未授權,因此403)或不存在頁面(404)時,他被重定向到ie。 https://DOMAIN.TLD/~WEBUSER/admin

這是.htaccess文件,在評論中包含一些額外的信息。

  ### INFO:在授權後處理重寫和重定向### @link https://serverfault.com/a/443185/253111 ### INFO:退出HTPASSWD會話###這並不總是可行的,但是當一個新的試圖使用時,Firefox和Chrome似乎會結束會話###:### https:// logout:logout@DOMAIN.TLD/~WEBUSER/### @link http:// stackoverflow.com/a/1163884/328272### FORCE SSL:明確要求某個域的SSL證書###禁止未簽名的證書等.ErrorDocument命令用於###將用戶重定向到HTTPS URL。### @link http://forum.powweb.com/showthread.php?t=61566 SSLOptions + StrictRequire SSLRequireSSL SSLRequire%{HTTP_HOST} eq“DOMAIN.TLD”### HTPASSWD AUTHENTICATION AuthUserFile / var / www / vhosts / DOMAIN.TLD / web_users / WEBUSER / .htpasswd AuthType Basic AuthName“Hello”
     
			
        

為什麼你需要SSLRequire%{HTTP_HOST} eq“DOMAIN.TLD”?對於哪種情況有幫助?順便說一下:SSLRequire被折舊httpd.apache.org/docs/current/mod/mod_ssl.html#sslrequire - Adam於19年1月19日在9:20

+10
<p> Molomby的解決方案適用於2.4及更高版本,但不適用於當前的Debian版本2.2.22。</ p> <p> Ben的/ Chris Heald的解決方案在2.2.22中對我沒有用,但是這是由於不同的訂單/滿足配置。這些設置已隨2.4更改,解決方案似乎與2.4及更高版本不兼容(重定向有效,但瀏覽器只顯示未經授權的錯誤而無需提供憑據)。</ p> <p>以下是兩者的組合適用於2.4以下版本的解決方案:</ p> <pre> <code> RewriteOptions上的RewriteEngine從父目錄繼承#recrite規則RewriteCond%{HTTPS} off RewriteRule ^。* $ https://%{SERVER_NAME} %{REQUEST_URI} [R = 301,L] AuthType摘要AuthName“私有區域” AuthDigestProvider文件AuthUserFile /path/to/file/.htdigest&lt; IfVersion&lt; 2.4&GT; 訂單拒絕,允許所有人滿意的拒絕任何#重置為自定義&lt;文件&gt;中的'全部' 和&lt;目錄&gt; 阻止訪問的指令允許來自env =!HTTPS要求valid-user&lt; / IfVersion&gt; &lt; IfVersion&gt; = 2.4&gt; &lt;如果“%{HTTPS} =='on'”&gt; AuthMerging並要求有效用戶&lt; / If&gt; &LT; / IfVersion&GT; </ code> </ pre> <p>要求:mod_rewrite,mod_auth,mod_digest,mod_version </ p> 在自定義&lt; Files&gt; 和&lt;目錄&gt; 阻止訪問的指令允許來自env =!HTTPS要求valid-user&lt; / IfVersion&gt; &lt; IfVersion&gt; = 2.4&gt; &lt;如果“%{HTTPS} =='on'”&gt; AuthMerging並要求有效用戶&lt; / If&gt; &LT; / IfVersion&GT; </ code> </ pre> <p>要求:mod_rewrite,mod_auth,mod_digest,mod_version </ p> 在自定義&lt; Files&gt; 和&lt;目錄&gt; 阻止訪問的指令允許來自env =!HTTPS要求valid-user&lt; / IfVersion&gt; &lt; IfVersion&gt; = 2.4&gt; &lt;如果“%{HTTPS} =='on'”&gt; AuthMerging並要求有效用戶&lt; / If&gt; &LT; / IfVersion&GT; </ code> </ pre> <p>要求:mod_rewrite,mod_auth,mod_digest,mod_version </ p>

很好的想法,但它失敗了(500錯誤),因為即使使用

@LWC 1.)編程語言是你的觀點的一個不好的比喻。反例:如果預處理器刪除了無效的部分,則可以編譯無效的C代碼。作為用戶,我希望IfVersion在不評估其內容的情況下工作。2.)我使用Apache 2.2.22在2014-02至2014-09期間使用此配置。它可能是無效的,可能導致錯誤日誌條目(我沒有檢查),但它按預期工作,沒有響應5xx錯誤。(也許它只能用於Debian版本,有時會與上游版本不同。) - Istador 2017年8月8日19:14

我猜不是全部,只是其中很多。謝謝你的澄清! - LWC於2017年8月8日23:29

+10
<p>我正在運行Apache 2.2,上述解決方案都不適用於我。我為我找到了一個解決方法<a href="http://blog.jozjan.net/2008/02/htaccess-redirect-to-ssl-https-before.html" rel="nofollow">這裡</a> 。基本上,您需要設置SSLRequireSSL並在ErrorDocument中使用一些腳本語言將用戶轉發到HTTPS。不幸的是,在我的情況下,這僅在訪問服務器上的特定文件時有效,如果僅提供域,則它不起作用。這是我做的:</ p> <pre> <code> AuthType Basic AuthName“密碼保護區域”AuthUserFile /my/path/to/.htpasswd#Require valid-user&lt; FilesMatch“(^(?!ssl。 PHP)*)“&GT。SSLRequireSSL ErrorDocument 403 /ssl.php需要valid-user&lt; / FilesMatch&gt; </代碼> </ pre> <p> FileMatch中的正則表達式告訴apache到SSLRequireSSL以獲取除ssl.php之外的所有文件 - 並且如果用戶嘗試在沒有SSL的情況下進行訪問,則將用戶轉發給ssl.php。</ p> <p>我的ssl.php看起來像這樣:</ p> <pre> <code> if(!isset($ _ SERVER ['HTTPS'])|| $ _SERVER ['HTTPS'] ==“”|| $ _SERVER ['HTTPS'] = =“off”){$ redirect =“https://”。$ _ SERVER ['HTTP_HOST']。$ _ SERVER ['REQUEST_URI']; 標題(“HTTP / 1.1 301永久移動”); 標題(“位置:$ redirect”); 出口; } </ code> </ pre> <p>現在發生了什麼:</ p> <ul> <li>打開<a href =“http://example.com/some/file.php”rel =“nofollow “> http://example.com/some/file.php </a>轉發到< a href =“https://example.com/some/file.php”rel =“nofollow”> https://example.com/some/file.php </a>並詢問用戶名和&amp; 密碼。</ li> <li>打開<a href="https://example.com/" rel="nofollow"> https://example.com/ </a>通過https連接並詢問您/ p </ li> <li>打開<a href="https://example.com/some/file.php" rel="nofollow"> https://example.com/some/file.php</a >基本相同。</ li> <li>打開<a href="http://example.com/" rel="nofollow"> http://example.com/ </a>轉發默認值apache服務器頁面</ li> </ ul> <p>最後一點是我不滿意的,如果有人有解決方案,我很高興聽到它。我嘗試解決這個問題的事情:</ p> <ul> <li>將正則表達式更改為(^ $)|(^(?!ssl.php)。*)以顯式地匹配空字符串。無法正常工作</ li> <li>添加了重寫規則,將空字符串重寫為index.php。也不起作用。</ li> </ ul>
0
<p>以上都不適合我,但確實如此。我唯一擔心的是,如果某些情況下沒有觸發auth,允許某人在沒有憑據的情況下進行訪問。我不確定有沒有,但也許你們有光明的人可能會說不出來。</ p> <p>這段代碼將非www重定向到www,http重定向到https,帶有.htaccess文件夾auth。</ p> <p>這是您要保護的目錄中htaccess文件的內容:</ p> <pre> <code> RewriteEngine on#ensure www。RewriteCond%{HTTP_HOST}!^ www。[NC] RewriteRule ^(。*)$ https://www.% {HTTP_HOST} / foldername / $ 1 [L,R = 301] #confured https RewriteCond%{HTTP:X-Forwarded-Proto}!https RewriteCond%{ HTTPS}!= on [NC] RewriteRule ^(。*)$ https://%{HTTP_HOST} / foldername / $ 1 [L,R = 301] #Apache 2.4如果&lt; If“%{HTTPS} =='on '&安培;&安培; %{HTTP_HOST} =?/ www /“&gt; AuthType Basic AuthName”受保護的文件夾“AuthUserFile”/home/etc/.htpasswds/public_html/foldername/passwd“需要有效用戶&lt; / If&gt; </ code> </ PRE>

這是問題#2221636的重複 - Daniel S. Sterling 2011年11月17日18:27

我為此編寫了一個簡單的幫助類。請參閱github.com/Spudley/ApacheLogIterator - SDC 2012年8月17日12:38

@SDC:謝謝西蒙,那個迭代器太棒了! - Pete855217 2014年9月12日8:18

0
<p>以下是我的一個配置中唯一有效的解決方案:</ p> <pre> <code> RewriteEngine On RewriteCond%{SERVER_PORT} 80 RewriteRule ^(。*)$ https://%{HTTP_HOST}% {REQUEST_URI} [R = 301,L]&lt; If“%{SERVER_PORT}!='80'”&gt; AuthUserFile / etc / hi AuthName“hi”AuthType Basic需要有效用戶&lt; / If&gt; </ code> </ pre> <p>值得注意的是,這是針對我無法控制的Apache 2.4(共享主機)。似乎未在此配置上定義<code>%{HTTPS} </ code>變量,並且基於<code> SSLRequireSSL </ code>的任何解決方案都會生成500內部服務器錯誤。</ p> <hr> <p>(旁注:如果您在提供HTTP請求時更喜歡403 Forbidden而不是301 Permanent Redirect,
0
votes
answers
24 views
+10

訪問VBA:將窗體/子窗體名稱傳遞給函數?

0

我正試圖將一個窗體/子窗體名稱傳遞給一個函數,但沒有成功。該功能通過子窗體上的每個.Control控制,並執行一組簡單的查詢操作。我的代碼正常工作與表單/子表單名稱硬編碼;我正在尋找更通用的方法。訪問VBA:將窗體/子窗體名稱傳遞給函數?

在函數調用中獲取類型不匹配錯誤,使用和不使用引號。

實施例:

'Function Call 
    call AuditChanges("forms![someForm]![someSubForm]") 

'Audit Function 
Sub AuditChanges(thisForm as form) 
    Dim ctl As Control 
    Dim strTest as string 

    For each ctl in thisForm.controls 
     strTest = ctl.Value 
     'do some stuff 
    Next ctl 

end sub 

正確的語法任何建議傳遞形式/子窗體的信息?

謝謝!

+1

_「在函數調用中獲取類型不匹配錯誤」_通常最好也引用它。 –

沙发
0
2

你的子調用各種奇怪的:

您的錯誤的可能原因是引號。您當前將字符串傳遞給包含"forms![someForm]![someSubForm]"

的字符串此外,當您沒有收到返回值時(因此從不在調用子時),不應使用括號。

此外,很久以前Call關鍵字已被棄用。

而且你可能想通過表單對象,而不是窗體控件對象

試着打電話給你分這樣的:

之前
AuditChanges forms![someForm]![someSubForm].Form 

(從未有過的一行代碼這麼多評論)

+0

對不起,這個例子是一個很弱的嘗試來說明我的意圖而不會讓細節混亂。 :) –

+0

Erik,您的建議「AuditChanges形式![someForm]![someSubForm] .Form」(不含引號)根據需要工作。 - 謝謝 –

+0

好。我有時候有點批評,大約一半的觀點('call',括號)可能不是任何錯誤的原因。一個最小的例子往往很難,魔鬼的細節:) –

0
votes
answers
21 views
+10

PHP重定向用戶

0

我正在爲大學項目開發??CORE PHP中的自定義CMS。顯然我有很多文件和文件夾。我需要幫助在用戶激發模板頁面時重定向用戶。 這裏的項目PHP重定向用戶

Project 
    | assets 
     | css +js stuff 
    | template 
     | - header.php 
     | - footer.php 
     | - navigation.php 
     | --- 
    | - index.php 
    | - login.php 
    | --- 

現在有什麼我的問題的文件結構:我想重定向用戶,如果用戶直接觸發project.com/template/header.php。與naviation.phpfooter等模板文件相同。是否有任何.htaccess變通或處理此功能的函數。

我沒關係爲重定向用戶創建一個錯誤或404頁面。

+0

爲什麼不把訪問者的文件放在httpdocs根目錄之外? –

+0

我不訪問者直接在url中激發標題或導航文件。顯而易見的原因是它會向他們顯示錯誤。不過,我沒有在任何地方放置頁眉/頁腳/導航的直接網址。所以用戶將無法知道它的文件結構。但仍然 –

+0

你知道Code Igniter PHP Framework嗎? –

沙发
0
0

您可以創建一個定義,在有效頁面開始
然後在模板頁開始wiith測試,如果值定義 如果不是重定向到index.php

define('TOKEN', true); 
... 
if (!defined('TOKEN')) { 
    header('location:index.php'); 
    exit(); 
} 
板凳
0
2

可以包括一些就像在任何頁面下到你不想直接訪問

if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) { 
    header('HTTP/1.0 404 Not Found', TRUE, 404); 
    die(header('location: error.php?code=404')); 
} 
+0

工作就像一個魅力!謝謝!但仍然有更好的方法來處理這種情況。 –

+0

你可以在你的htaccess文件中設置一些規則來防止訪問'template'目錄,它的文件 – RamRaider

地板
0
0

您可以通過.htaccess文件

做到這一點

創建.htaccess文件並將以下行插入該文件,然後將該文件移動到根文件夾。

Redirect 301 /header.php http://www.yourdomain.com/404.php 
Redirect 301 /footer.php http://www.yourdomain.com/404.php 
Redirect 301 /navigation.php http://www.yourdomain.com/404.php