2017-09-21 91 views
0

我在嘗試將所有調用路由到一個目錄到該目錄中的一個腳本時遇到了mod_rewrite問題。這個簡單的規則是工作在Linux上:Mod重寫在Mac OSX中Sierra

重寫規則* api.cgi

在錯誤日誌中對這個操作系統,爲了這個,我得到「重寫規則:不能編譯正則表達式‘*’」。

我已經嘗試了一些其他的事情,並且mod rewrite正在處理一些匹配,但只對文件名而不是目錄路徑。

例如, RewriteRule。* api.cgi - 將任何帶有文件名的文件路由到api.cgi,這證明它正在工作,但是我想將/ api/config /路由到api.cgi。我似乎只能得到/api/config/something.something實際上強制重寫 - 即它需要一個文件名。

任何想法?我從字面上想要把這個目錄中的所有東西都路由到api.cgi,不管它有多少深度或是否在文件結尾處有一個文件名。

謝謝, 馬特

回答

0

您可以使用:

RewriteRule^api.cgi 

但通常的結果是完全與

RewriteRule .* api.cgi 

相同的,如果你做了很多測試,它是可能的這是一個緩存問題。嘗試清除緩存或使用其他瀏覽器。

+0

謝謝,但仍然是相同的問題。 RewriteRule^api.cgi和RewriteRule。* api.cgi都會使用a重定向任何東西。在其中,但不是如果它只是一個文件路徑。所以/api/config.html會重定向/ api/config。會重定向,但/ api/config不會。給出的錯誤信息是標準404 在此服務器上未找到請求的URL /〜用戶名/ cgi-bin/api2/config。 很顯然,url不存在,但它應該重定向而不是404。 –

+0

不,在正則表達式中。*:星號表示前面元素的零次或多次出現。和'.'匹配任何單個字符。 https://en.wikipedia.org/wiki/Regular_expression – Croises

+0

我認爲問題出在你的cgi上 – Croises